无法使用Google Map API(GMSMapView)获取当前位置

时间:2013-12-16 09:30:08

标签: ios iphone objective-c google-maps

我尝试使用Google Map API将当前位置的方向转移到其他位置。我手动输入原点和目的地点时一切正常。但是,当我尝试将原点设置为当前位置时,该位置为null,如下面的代码所示:

mainMap=[[GMSMapView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:[mainMap.myLocation coordinate] zoom:13];
mainMap.camera=camera;
mainMap.myLocationEnabled=YES; // <---- The blue point appear on map: it's exactly my location

[self.view addSubview:mainMap];

//Get mylocation
CLLocation *myLocation = mainMap.myLocation; // <----- NULL

有没有人知道我的问题在这里? Tks很多

1 个答案:

答案 0 :(得分:3)

问题是:获取一个位置是异步的,你如何做到这一点是期望它阻止它到那里......这不是它的工作方式

你必须在地图和观察者myLocation中添加一个KVO观察者 然后,当您的observe方法被调用时,您将获得myLocation。

(蓝点也是如此:))

- (void)viewDidLoad {
    //...
    [self.mapView addObserver:self forKeyPath:"myLocation" options:0 context:nil];
}
- (void)dealloc {
    [_mapView removeObserver:self forKeyPath:@"myLocation"];
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if([keyPath isEqualToString:@"myLocation"]) {
        CLLocation *l = [object myLocation];
        //...
    }
}