应用程序首次启动时,MKMapView userLocation返回坐标0.0; 0.0

时间:2013-04-06 22:03:33

标签: objective-c cocoa-touch ios5 mkmapview core-location

我目前正在开发一个使用MKMapView控件的应用。假设通过蓝点(如地图应用程序)显示用户的位置,但是当应用程序首次安装在设备上然后启动时,您会有提示要求用户进行授权,但一旦被接受,用户的地图未显示在地图上,返回的坐标为0.0; 0.0。

然后,我关闭应用程序,将其从多任务处理中删除并再次启动它,并且正确显示位置并返回正确的坐标。

我还使用CoreLocation以便能够计算两点之间的距离并获得标题,然后我使用自定义消息设置该提示,该消息显示应用程序的两个全新安装中的一个(我想知道为什么),我并不真正关心最后一个问题,但它可能有助于了解这个细节。

如果能够在应用首次发布时显示蓝色,我该怎么办?

此致

最高

1 个答案:

答案 0 :(得分:1)

是的,这有时会发生在iPhone上(不在模拟器中),我也遇到了同样的问题,如果你试图将地图缩放到给定位置,它会崩溃应用程序。您可能希望使用以下代码来避免这种情况。这将丢弃无效的GPS更新,最终您将开始获取有效数据

if (mapView.userLocation.coordinate.latitude <= -180.0f
    || mapView.userLocation.coordinate.latitude >= 180.0f
    || mapView.userLocation.coordinate.longitude <= -180.0f
    || mapView.userLocation.coordinate.longitude >= 180.0f
    || (mapView.userLocation.coordinate.latitude == 0.0f 
    && mapView.userLocation.coordinate.longitude == 0.0f) ) {

    return; // or something else you may like to do
} 

// rest of the code