Iphone 正在停止MKMapview的用户位置更新(蓝点)

Iphone 正在停止MKMapview的用户位置更新(蓝点),iphone,ios,mapkit,core-location,cllocationmanager,Iphone,Ios,Mapkit,Core Location,Cllocationmanager,我正在为我的应用程序使用CLLocationManager实例和MKMapView。我有一个点击的按钮,将触发我的位置管理器的startUpdatingLocation,它允许我通过DidUpdateLocation回调接收新的位置更新。一旦我对准确性感到满意,我将停止这些更新: [locationManager stopUpdatingLocation]; locationManager.delegate = nil; 问题是,GPS保持打开状态,如状态栏右上角的箭头所示。经过进一步调查,我

我正在为我的应用程序使用CLLocationManager实例和MKMapView。我有一个点击的按钮,将触发我的位置管理器的startUpdatingLocation,它允许我通过DidUpdateLocation回调接收新的位置更新。一旦我对准确性感到满意,我将停止这些更新:

[locationManager stopUpdatingLocation];
locationManager.delegate = nil;
问题是,GPS保持打开状态,如状态栏右上角的箭头所示。经过进一步调查,我意识到这是因为mapView显示了suserLocation=YES,这意味着它将继续接收更新,即使我自己的locationManager实例已停止更新

在我停止更新后添加以下内容会关闭GPS标志,但蓝点显然会消失(但我确实希望当前位置仍然可以可视化)

对于我的应用程序,我需要使用CLLocationManager(计算一定距离内最近的POI)和MKMapView(主要用于将这些POI显示为我位置周围的注释)。有没有一种方法可以简单地停止对两者的所有GPS更新,并在该点冻结蓝点


我想完全禁用mapView.showsUserLocation,并将CLLocation作为自定义注释从LocationManager绘制到mapView,但我不确定这是最好的方法。有什么想法吗?

我认为,一旦您将位置更新到所需的精度,删除注释pin将足够直观,用户可以知道所选的位置。这在MKMapView使用中是相当标准的


另一件需要考虑的事情是,位置箭头实际上会持续一段时间(取决于使用的类型),即使在您停止监视位置之后也是如此。您可以在苹果的位置指南中找到它的持续时间,但也要考虑一些事情。

如果您将<代码> StasSuxReals< /Cuff> > <代码>是/代码>,那就意味着您希望保持位置服务。显示用户过去的位置不是显示他们的位置,而是显示他们的历史记录。除非位置服务打开,否则您无法知道位置没有更改。即使使用地理围栏,仍在使用定位服务。我认为在地图上有一个陈旧的用户位置点会让用户感到困惑。但是,如果您真的想这样做,我认为绘制您自己的自定义注释(使用蓝点图像的注释视图)将是一个不错的选择。
mapView.showsUserLocation = NO;