首页 文章

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

提问于
浏览
3

我正在为我的应用程序使用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作为自定义注释,但我不确定这是最好的方法 . 有任何想法吗?

1 回答

  • 1

    我认为,一旦完成将位置更新到所需精度,删除注释引脚将足够直观,以便用户知道所选位置 . 这是MKMapView用法中非常标准的 .

    另一件需要考虑的事情是,位置箭头实际上会持续一段时间(取决于使用类型),即使您停止监控位置也是如此 . 你可以在Apple的位置指南中找到它存在多长时间,但也需要考虑 .

相关问题