如何在不运行 GPS 更新位置(根本)时在 mapView 中显示用户位置?将要
mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;
做这项工作还是GPS仍然会在后台烧电池?
谢谢 :)
如何在不运行 GPS 更新位置(根本)时在 mapView 中显示用户位置?将要
mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;
做这项工作还是GPS仍然会在后台烧电池?
谢谢 :)
鉴于信息有限,我将尽力回答您的问题。
GPS有3种主要模式,从低功率到高功率,从低精度到高精度。
如果MKMapView
您设置showsUserLocation
为,则会为用户位置显示一个蓝点YES
。将MKMapView
使用所有可用的定位方法尽可能准确地找到用户位置,并在设置为 YES 时不断更新它。
中的跟踪是MKMapView
一种将用户位置保持在屏幕中心的模式,随着用户的移动移动可见的地图区域,并且在 iOS5 中可用。您有 3 个MKUserTrackingMode
s 可供选择。从文档:
MKUserTrackingModeNone:地图不跟随用户位置。
MKUserTrackingModeFollow:地图跟随用户位置。
MKUserTrackingModeFollowWithHeading:地图跟随用户位置,随着航向变化而旋转。
因此,将其设置kCLLocationAccuracyNearestTenMeters
为不起作用,因为在这种情况下它不是可用的选项。
在后台显示位置会烧电池吗?这取决于你所说的背景。当用户点击主页按钮时,MKMapView
系统会强制停止使用 GPS。当应用程序正在运行并且 MKMapView 处于活动状态并且showsUserLocation
设置了属性时YES
,它将继续使用任何可用的方法(包括 GPS)来更新位置。你有几个策略来减少这种情况。
1) 假设用户需要在地图显示在屏幕上时看到他们的位置更新。在这种情况下,保持showsUserLocation
设置为 YES 直到地图移出屏幕或设备被锁定,然后将其设置为NO
2)假设用户只需要从特定时间点看到他们位置的静态标记,例如打开应用程序时。在这种情况下,您需要创建一个CLLocationManager
对象,询问它startUpdatingLocation
,过滤委托消息以获得所需的准确性,然后关闭位置更新 ( stopUpdatingLocation
)。然后,您可以添加一个MKAnnotation
以MKMapView
向用户显示他们的位置。
如您所见,第 2 项工作量更大,但非常省电。数字 1 很简单,但在地图可见时会消耗更多电池。由您决定用户期望的行为并相应地实施您的应用程序。