获取经度和纬度值

时间:2011-10-24 16:38:14

标签: iphone objective-c ios cocoa-touch core-location

我正在尝试从我的代码连接到GPS。我是根据to this tutorial这样做的。

- (void)viewDidLoad {
    [super viewDidLoad];

    CLController = [[CoreLocationController alloc] init];
    CLController.delegate = self;
    [CLController.locMgr startUpdatingLocation];
 }

- (void)locationUpdate:(CLLocation *)location {
    locLabel.text = [location description];
  }

- (void)locationError:(NSError *)error {
    locLabel.text = [error description];
  }

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
  }

上面的代码放在名为GetMyLocationViewController的视图控制器中,我有另一个名为MainScreenViewController的视图控制器。

当屏幕加载时,MainScreenViewController会被加载,我需要GPS位置才能继续使用此屏幕进行操作。

ViewDidLoad的{​​{1}}方法中,我写了以下内容;

MainScreenViewController

执行上述代码后,- (void)viewDidLoad { [super viewDidLoad]; GetMyLocationViewController *getMyLocationViewController = [[GetMyLocationViewController alloc]initwithXib:nil bundle:nil]; [self.navigationController pushViewController:getMyLocationViewController Animation:YES]; // AND THEN I NEED TO ACCESS THE LONGITUDE AND LATITUDE VALUES } viewDidLoad方法将被执行,而MainScreenViewController方法则无法执行。我可以获得locationUpdatelongitude值的唯一方法是执行latitude方法。那么我怎样才能获得这些价值呢?

2 个答案:

答案 0 :(得分:0)

您是否在设备中进行了测试?版本4.2之前的xcode没有GPS模拟器,因为方法位置Update永远不会调用。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) {  // Check if the class assigning itself as the delegate conforms to our protocol.  If not, the message will go nowhere.  Not good.
        [self.delegate locationUpdate:newLocation];
    }
}

答案 1 :(得分:0)

您确定要加载GetMyLocationViewController吗?您的代码仅显示加载MainScreenViewController-viewDidLoad在其MainScreenViewControllers方法中再次加载自身,这将导致无限循环的加载和推送-(void)viewDidLoad { [super viewDidLoad]; self.locationManager = [[CLLocationManager alloc] init]; self.locationManager.delegate = self; [self.locationManager startUpdatingLocation]; }

更新:教程中的CoreLocationController类似乎没必要。而是使用它,使CLLocationManager成为GetMyLocationViewController的属性。使GetMyLocationViewController的-viewDidLoad方法如下所示:

{{1}}

不要忘记导入CoreLocation库并实现委托方法。