Objective c MKMapView userLocation返回坐标0.0;应用程序'上的0.0;第一次发射

Objective c MKMapView userLocation返回坐标0.0;应用程序'上的0.0;第一次发射,objective-c,cocoa-touch,ios5,mkmapview,core-location,Objective C,Cocoa Touch,Ios5,Mkmapview,Core Location,我目前正在开发一个应用程序,它使用了MKMapView控件。假设通过蓝点显示用户的位置(如地图应用程序),但当应用程序首次安装在设备上并启动时,会有提示要求用户授权,但一旦接受,用户的位置不会显示在地图上,返回的坐标为0.0;0.0 然后,我关闭应用程序,将其从多任务处理中删除,然后再次启动它,然后正确显示位置并返回正确的坐标 我还使用CoreLocation来计算两点之间的距离并获取标题,我用一条自定义消息来设置它,以显示提示,显示两次新安装的应用程序中的一次(我想知道为什么),我并不真正关心

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

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

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

我应该怎么做才能让蓝色的do在应用程序首次发布时显示出来

真诚地


Max

是的,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
if(mapView.userLocation.coordinate.latitude=180.0f
||mapView.userLocation.coordinate.longitude=180.0f
||(mapView.userLocation.coordinate.latitude==0.0f
&&mapView.userLocation.coordinate.longitude==0.0f)){
return;//或者您可能想做的其他事情
} 
//代码的其余部分

更新用户位置可能需要时间。它使用核心位置更新用户当前位置。这可能会调用-[CLLocationManager startUpdatingLocation]或其他类似方法来更新当前位置。这些方法立即返回并设置回调,以便在找到位置时调用它。要停止蓝色,请设置一些选择器以在一定延迟后调用。好吧,我也是这么想的,只是我将其保留了一个小时,没有任何更改,我尝试了iOS 6上的3GS,但在模拟器上工作正常。检查应用程序的位置更新是否在“设置”中被禁用。否则,它应该非常简单,根本不需要编码。只需在故事板中拖动地图视图并选中“显示用户位置”选项就可以了。现在我意识到了。这似乎是某种错误。我猜您必须将delegate设置为map,当收到didUpdateLocation委托时,您自己添加注释。或者,使用core location来更新位置,然后添加注释。看来也是唯一的方法,CoreLocation正在向我返回良好的数据,因此我将尝试将其实现为仅在第一次启动时替换MKMapCiew ShowUserLocation,我唯一关心的是,由于我使用了该方法,因此标题会发生什么情况“MKUserTrackingModeFollowWithHeading”。