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

标签 iphone mapkit coordinates

我正在尝试使用此 viewDidLoad 方法获取用户当前的纬度和经度。生成的 map 正确指示当前位置,但 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

有人知道我在这里缺少什么吗?预先感谢您的帮助!

- (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);
}

最佳答案

据我所知,在实际显示之前, map 不会尝试获取用户位置。一个很好的测试是,什么时候会出现对话框,询问应用程序是否可以获取用户位置?根据我的经验,这种情况总是在 map 显示在屏幕上之后才会出现。

如果您必须在启动时获得位置,解决此问题的最佳方法是实现经典的核心位置处理程序代码并从最初获取位置。一旦 map 启动,您就可以停止从那里接收更新,并从那里获得进一步的更改(尽管如果您需要持续更新,您最好只保留标准的核心位置更新。如果您考虑一下,当您“向用户显示”在 map 中启用“位置”后,您的应用程序对核心位置的进一步使用基本上是免费的,因为无论如何 GPS 都会一直启动。

关于iPhone 当前用户位置坐标显示为 (0,0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1449486/

相关文章:

iphone - 使用 locationOfTouch 查找手势触摸的坐标

google-maps - Google Maps API V3:如何获取区域边界坐标(折线)数据?

iphone - 使用#define 访问 App Delegate 对象不起作用

ios - 如何使用 Xcode51_Be​​ta 在 iOS 7.1 beta 设备中编译应用程序

iOS 如何让 MapKit 显示自定义室内地图?

macos - MKMapView 在 keyDown 上向右/向左移动 :

ios - 为什么我的 MapKit 标注 View 这么小,没有显示它需要显示的所有内容?

ios - 我怎样才能让我的 UISwitch 调用方法(我正在使用 theos)

iphone - 具有多个(~50)屏幕的 iPhone 应用程序的设计选项,每个屏幕都具有相同的背景

javascript - 根据管端法线将旋转应用于圆柱体