无法使用Google地图API(GMSMapView)获取当前位置
我尝试使用Google Map API从当前位置到另一个位置的方向。 当我手动input原点和目标点时,一切正常。 但是,当我尝试将原点设置为当前位置时,位置为下面的代码为空:
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
有没有人知道我的问题在这里? 很多
事情是:获取一个位置是asynchronous的,你如何做到这一点是期望它阻止,直到它那里…这不是它是如何工作的
你必须在地图和观察者myLocation中添加一个KVO观察者。
然后当你的观察方法被调用,你得到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]; //... } }