我正在为我的应用程序使用 CLLocationManager 和 MKMapView 的实例。我有一个点击按钮,将触发我的位置管理器的 startUpdatingLocation,它允许我通过 didUpdateToLocation 回调接收新的位置更新。一旦我对准确性感到满意,我就会停止这些更新:
[locationManager stopUpdatingLocation];
locationManager.delegate = nil;
问题是,GPS 保持打开状态,如状态栏右上角的箭头所示。经过进一步调查,我意识到这是由于 mapView 有 showUserLocation = YES,这意味着它会继续接收更新,即使我自己的 locationManager 实例已停止更新。
在我停止更新后添加以下内容会关闭 GPS 标志,但蓝点显然会消失(但我确实希望当前位置仍然存在以进行可视化)。
mapView.showsUserLocation = NO;
对于我的应用程序,我需要同时使用 CLLocationManager(计算一定距离内最近的 POI)和 MKMapView(主要用于将这些 POI 显示为我的位置周围的注释)。有没有办法简单地停止对两者的所有 GPS 更新,并在此时冻结蓝点?
我想过完全禁用 mapView.showsUserLocation,并将 CLLocation 从 LocationManager 绘制到 mapView 作为自定义注释,但我不确定这是最好的方法。有任何想法吗?