iphone应用程序:关于CLLocationmanager和MKMapView之间交互的问题(显示当前用户位置)

iphone应用程序:关于CLLocationmanager和MKMapView之间交互的问题(显示当前用户位置),iphone,gps,mkmapview,cllocationmanager,Iphone,Gps,Mkmapview,Cllocationmanager,在我的iPhone应用程序中,我有以下逻辑: 启动CLLocationManager(用户可以向locationmanager提供精度和距离过滤器参数,因为在我的情况下不需要最佳精度,100-300米就可以了,我想在这方面节省电池) LocationManager获得GPS定位后(仅当获得此定位时),我创建并显示地图。CLLocationManager和MKmapView都是同一个ViewController的一部分。要显示当前位置,我将mapView.showsUserLocation:YES

在我的iPhone应用程序中,我有以下逻辑:

  • 启动CLLocationManager(用户可以向locationmanager提供精度和距离过滤器参数,因为在我的情况下不需要最佳精度,100-300米就可以了,我想在这方面节省电池)

  • LocationManager获得GPS定位后(仅当获得此定位时),我创建并显示地图。CLLocationManager和MKmapView都是同一个ViewController的一部分。要显示当前位置,我将mapView.showsUserLocation:YES设置为显示蓝点。我开始的locationManager仍然在工作,获取GPS更新

  • 苹果的文档在MKMapView showserlocation上说:

    将此属性设置为“是”将导致地图视图使用核心位置框架查找当前位置。只要此属性为“是”,地图视图将继续跟踪用户的位置并定期更新

    对于MKMapView的当前位置,没有关于精度或距离过滤器的文字。在我看来,在这一点上,我自己启动的locationManager和mapView自己的locationManager都在更新位置

    记住,我想通过设置精度和距离过滤器来节省一些电池?mapView的locationManager是否会遵守这些参数

    另外,这两个位置管理器是否将彼此同步?我用原始locationManager获得的新GPS坐标更新地图,使其居中。但我也希望在地图的中心可以看到蓝点。自从我将mapView的showsUserLocation设置为TRUE后,它是否也会每次更新

    我很感激任何对此有线索的人。

    我的理解(基于我所看到的,而不是基于文档,因为我似乎找不到任何涵盖这一点的内容)是,
    showsUserLocation
    属性导致mapView使用最高精度设置启动
    CLLocationManager
    实例(1m距离过滤器,最佳精度),然后在location manager返回更新时更新其蓝色圆圈批注视图。它还根据位置更新的水平精度更新圆形覆盖。我相信
    CLLocationManager
    的此实例与您自己可能启动的任何实例是分开的,因为我还运行了段落中的
    CLLocationManager
    保持水平,并且看不到来自地图视图当前位置更新的任何干扰

    因此,如果您不希望
    MKMapView
    运行自己的高精度位置管理器实例,请禁用
    showsUserLocation
    ,并根据
    CLLocationManager
    的位置更新创建并手动更新您自己的当前位置
    MKAnnotationView
    。您还可以缩放到新的更新这是适用的

    我知道这本质上是对轮子的重新发明,但我相信这是根据苹果提供的工具获得你想要的功能的唯一途径。如果其他人知道,请插话,因为我也会感兴趣