iPhone当前用户位置坐标显示为(0,0)

enn*_*ler 8 iphone coordinates mapkit

我正在尝试使用此viewDidLoad方法获取用户当前的纬度和经度.生成的映射正确指示当前位置,但NSLog始终显示:

2009-09-19 16:45:29.765 Mapper[671:207] user latitude = 0.000000
2009-09-19 16:45:29.772 Mapper[671:207] user longitude = 0.000000
Run Code Online (Sandbox Code Playgroud)

谁知道我在这里失踪了什么?在此先感谢您的帮助!

- (void)viewDidLoad {
    [super viewDidLoad];
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];
    [mapView setShowsUserLocation:YES];

    CLLocation *userLoc = mapView.userLocation.location;
    CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

    NSLog(@"user latitude = %f",userCoordinate.latitude);
    NSLog(@"user longitude = %f",userCoordinate.longitude);
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*ner 9

据我所知,在实际显示之前,地图不会尝试获取用户位置.对此的一个很好的测试是,你什么时候得到对话框,询问你是否可以让应用程序获得用户位置?根据我的经验,只有在地图显示在屏幕上之后才会出现.

如果您必须在启动时有一个位置,解决此问题的最佳方法是实现经典的核心位置处理程序代码并从最初获取位置.一旦地图启动,您可以停止从那里接收更新并从那里获得进一步的更改(尽管如果您需要不断更新,最好只保留标准的核心位置更新.如果您考虑它,当您有"显示用户"时位置"在地图中启用您的应用程序进一步使用核心位置基本上是免费的,因为无论如何GPS将被启动.