iphone - 停止 MKMapview 的用户位置更新(蓝点)

标签 iphone ios mapkit core-location cllocationmanager

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

[locationManager stopUpdatingLocation];
locationManager.delegate = nil;

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

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

mapView.showsUserLocation = NO;

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

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

最佳答案

我认为,一旦您将位置更新到所需的准确度,放下注释图钉就足以让用户知道所选位置。这在 MKMapView 用法中是相当标准的。

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

关于iphone - 停止 MKMapview 的用户位置更新(蓝点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14424402/

相关文章:

iphone - 在设备上运行 OCUnit 应用程序测试套件时偶尔会出错

ios - Swift Array 正在从我的数组中打印单词 "optional"不想强制解包

iOS Storyboard - 添加 UINavigationBar 时未出现

iphone - 如何在mapkit中获取以像素为单位的米?

iphone - 自定义 MKPinAnnotation 标注气泡类似于默认标注气泡

ios - 在 MapView 上绘制矩形

iphone - 如何使用陀螺仪使 "paintball"停留在增强现实应用程序中的位置?

iphone - Windows 下 iOS 开发的替代方案

iphone - 你如何给自己做一个segue?

ios - Bump 不由自主地连接和断开连接 - iOS