0

如何在不运行 GPS 更新位置(根本)时在 mapView 中显示用户位置?将要

mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;

做这项工作还是GPS仍然会在后台烧电池?

谢谢 :)

4

1 回答 1

5

鉴于信息有限,我将尽力回答您的问题。

GPS有3种主要模式,从低功率到高功率,从低精度到高精度。

  • 位置跟踪关闭
  • 后台位置更新(使用手机信号塔和 wifi)
  • GPS位置更新

如果MKMapView您设置showsUserLocation为,则会为用户位置显示一个蓝点YES。将MKMapView使用所有可用的定位方法尽可能准确地找到用户位置,并在设置为 YES 时不断更新它。

中的跟踪是MKMapView一种将用户位置保持在屏幕中心的模式,随着用户的移动移动可见的地图区域,并且在 iOS5 中可用。您有 3 个MKUserTrackingModes 可供选择。从文档:

MKUserTrackingModeNone:地图不跟随用户位置。

MKUserTrackingModeFollow:地图跟随用户位置。

MKUserTrackingModeFollowWithHeading:地图跟随用户位置,随着航向变化而旋转。

因此,将其设置kCLLocationAccuracyNearestTenMeters为不起作用,因为在这种情况下它不是可用的选项。

在后台显示位置会烧电池吗?这取决于你所说的背景。当用户点击主页按钮时,MKMapView系统会强制停止使用 GPS。当应用程序正在运行并且 MKMapView 处于活动状态并且showsUserLocation设置了属性时YES,它将继续使用任何可用的方法(包括 GPS)来更新位置。你有几个策略来减少这种情况。

1) 假设用户需要在地图显示在屏幕上时看到他们的位置更新。在这种情况下,保持showsUserLocation设置为 YES 直到地图移出屏幕或设备被锁定,然后将其设置为NO

2)假设用户只需要从特定时间点看到他们位置的静态标记,例如打开应用程序时。在这种情况下,您需要创建一个CLLocationManager对象,询问它startUpdatingLocation,过滤委托消息以获得所需的准确性,然后关闭位置更新 ( stopUpdatingLocation)。然后,您可以添加一个MKAnnotationMKMapView向用户显示他们的位置。

如您所见,第 2 项工作量更大,但非常省电。数字 1 很简单,但在地图可见时会消耗更多电池。由您决定用户期望的行为并相应地实施您的应用程序。

于 2012-04-19T21:02:51.347 回答