2013-01-20 30 views
3

我正在使用CLLocationManager的实例以及用于我的应用程序的MKMapView。我有一个点击按钮,将触发我的位置管理器的startUpdatingLocation,它允许我通过didUpdateToLocation回调接收新的位置更新。我停止这些更新一次,我很满意精度:为MKMapview停止用户位置更新(蓝点)

[locationManager stopUpdatingLocation]; 
locationManager.delegate = nil; 

的问题是,通过在状态栏的右上角的箭头标志指示的GPS保持开启。经过进一步调查,我意识到这是由于mapView具有showsUserLocation = YES的事实,这意味着即使我自己的locationManager实例已停止更新,它仍将继续接收更新。

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

mapView.showsUserLocation = NO; 

对于我的应用程序,我需要同时使用CLLocationManager(CLLocationManager为计算在一定距离内的POI附近)和的MKMapView(主要针对这些兴趣点的显示为注释在我locatiom)。有没有一种方法可以简单地停止所有的GPS更新,并冻结当前的蓝点?

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

+1

如果您将'showsUserLocation'设置为'YES',那本质上意味着您想保留位置服务。显示用户**以前的位置**没有显示他们的位置,但他们的*历史*。除非定位服务处于开启状态,否则您无法知道该位置未更改。即使使用* geofencing *仍然使用位置服务。我认为在地图上有一个* stale *用户位置点会让用户感到困惑。但是,如果你真的想这样做,我认为绘制自己的自定义注释(使用注释视图是一个蓝点图像)将是一条路。 – Nate

回答

1

我认为,一旦你完成了更新地点到所需的准确性,删除注释引脚将足以让用户知道所选位置。这在MKMapView的用法中是非常标准的。

另一件需要考虑的事情是,即使在停止监视位置后,位置箭头实际上仍会持续一段时间(取决于使用的类型)。您可以从Apple找到位置指南持续多久,但也需要考虑。

相关问题