CLLocationManager didUpdateToLocation与MKMapView的didUpdateUserLocation

时间:2011-06-10 18:11:27

标签: xcode ios4 mkmapview cllocationmanager

我从CLLocationManager和MKMapView获取用户的位置。我应该使用哪一个来设置地图的中心坐标?

此外,模拟器中的两种方法的答案不同。 CLLocationManager返回正确的位置,而MKMapview的didUpdateUserLocation返回cupertino中的Apple办公室。

3 个答案:

答案 0 :(得分:2)

在使用地图时我会使用MapKit位置。

地图例程旨在用于处理地图;而CoreLocation例程无论地图如何都可以使用。 MapKit将报告影响地图的位置更改(如果showUserLocation为YES或跟踪模式为MKUserTrackingModeFollowWithHeading,则调用didUpdateUserLocation)。 CoreLocation的服务能够在应用程序处于后台时报告更改。

最重要的是你应该使用适合你所做的选项。在我的应用程序中,我使用两种服务:显示地图时使用MapKit,每当地图未显示或应用程序背景时使用CoreLocation。

有趣的是,自iOS 5发布以来,模拟器支持多种位置选项;查看模拟器应用程序的Debug菜单,我还在https://stackoverflow.com/a/8175468/338468处描述了其中一些选项。

答案 1 :(得分:0)

我使用CLLocationManager,正是因为它集中于1个无限循环Dr.它还为您提供了更多选项,您可以使用startMonitoringSignificantChanges ......等。

答案 2 :(得分:0)

如果您正在处理中国大陆的地点,我会推荐MapKit位置。它为您处理GPS偏移的计算(由于国家安全原因而由法律添加)。有关此问题的更多信息,请访问https://en.wikipedia.org/wiki/Restrictions_on_geographic_data_in_China