我尝试使用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很多
答案 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];
//...
}
}