我正在为我的应用程序使用CLLocationManager的实例以及MKMapView。我有一个点按的按钮,将触发我的位置管理器的startUpdatingLocation,它允许我通过didUpdateToLocation回调接收新的位置更新。一旦我对准确性感到满意,我就会停止这些更新:
[locationManager stopUpdatingLocation];
locationManager.delegate = nil;
问题是,GPS仍然打开,如状态栏右上角的箭头指示所示。经过进一步调查,我意识到这是因为mapView有showsUserLocation = YES,这意味着它将继续接收更新,即使我自己的locationManager实例已停止更新。
在我停止更新后添加以下内容会关闭GPS标志,但蓝点显然会消失(但我确实希望当前位置仍然可视化)。
mapView.showsUserLocation = NO;
对于我的应用程序,我需要使用CLLocationManager(计算一定距离内的最近POI)和MKMapView(主要用于显示这些POI作为我的locatiom周围的注释)。有没有办法简单地停止所有GPS更新,并在那一点冻结蓝点?
我想完全禁用mapView.showsUserLocation,并将CLLocation从LocationManager绘制到mapView作为自定义注释,但我不确定这是最好的方法。有什么想法吗?
答案 0 :(得分:1)
我认为,一旦您完成将位置更新到所需精度,删除注释引脚将足够直观,以便用户知道所选位置。这在MKMapView用法中非常标准。
要考虑的另一件事是,即使您停止监控位置,位置箭头实际上会持续一段时间(取决于使用类型)。您可以在Apple的“位置指南”中找到它存在多长时间,但也需要考虑一些事项。