我尝试使用Google Map API获取从当前位置到其他地点的路线。当我手动输入起点和终点时,一切都OK。但是,当我尝试将原点设置为当前位置时,该位置为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很多
最佳答案
关键是:获取位置是异步的,并且您希望如何进行操作,直到它到达那里为止……这不是它的工作方式
您必须在地图上添加KVO观察员客栈,并在观察员myLocation中添加。
然后,当您的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];
//...
}
}