我尝试过以下代码:
- (void)viewDidLoad
{
[super viewDidLoad];
mapView_.myLocationEnabled = YES;
CLLocation *myLocation = mapView_.myLocation;
NSLog(@"%f %f",myLocation.coordinate.latitude, myLocation.coordinate.longitude);
}
记录的输出为0.000000 0.000000。
我还检查了位置服务已启用的设置,并且还显示为我的应用启用了。
请帮我弄清楚我哪里出错了。
答案 0 :(得分:3)
在viewDidLoad
中始终显示为0,0,您必须使用KVO来观察坐标。请尝试以下代码: -
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.mapView addObserver:self forKeyPath:@"myLocation" options:NSKeyValueObservingOptionNew context: nil];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[self.mapView removeObserver:self forKeyPath:@"myLocation"];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"myLocation"] && [object isKindOfClass:[GMSMapView class]])
{
NSLog(@"KVO triggered. Location Latitude: %f Longitude: %f",self.mapView.myLocation.coordinate.latitude,self.mapView.myLocation.coordinate.longitude);
}
}
答案 1 :(得分:1)
设备和应用程序需要一段时间才能确定您的位置。它在启动时将无法使用。您需要听取位置的变化。
此答案描述了myLocation更改时的通知方式: