无法使用适用于iOS的Google Maps API获取当前位置坐标

无法使用适用于iOS的Google Maps API获取当前位置坐标,ios,google-maps,ios7,google-maps-sdk-ios,Ios,Google Maps,Ios7,Google Maps Sdk Ios,我尝试了以下代码: - (void)viewDidLoad { [super viewDidLoad]; mapView_.myLocationEnabled = YES; CLLocation *myLocation = mapView_.myLocation; NSLog(@"%f %f",myLocation.coordinate.latitude, myLocation.coordinate.longitude); } 正在记录的输出为0.000000

我尝试了以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    mapView_.myLocationEnabled = YES;

    CLLocation *myLocation = mapView_.myLocation;
    NSLog(@"%f %f",myLocation.coordinate.latitude, myLocation.coordinate.longitude);
}
正在记录的输出为0.0000000.000000

我还检查了位置服务已启用的设置,并显示我的应用程序已启用


请帮我找出哪里出了问题。

设备和应用程序计算出您的位置需要时间。启动时它将不可用。您需要监听位置中的更改

此答案描述了在myLocation发生更改时如何获得通知:


设备和应用程序计算出您的位置需要时间。启动时它将不可用。您需要监听位置中的更改

此答案描述了在myLocation发生更改时如何获得通知:


它在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);
    }
}

它在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);
    }
}

您是在XCode还是应用程序上调试?如果是XCode,您确定打开了底部栏上XCode中的simulate location并将其设置为实际位置吗?如果可以的话,那么看起来您使用的不是CLLocationManager。非常感谢。成功了!:您是在XCode还是应用程序上调试?如果是XCode,您确定打开了底部栏上XCode中的simulate location并将其设置为实际位置吗?如果可以的话,那么看起来您使用的不是CLLocationManager。非常感谢。成功了!: