iPhone:如何在不更新位置/让GPS在后台运行的情况下在地图视图上显示用户位置?

pas*_*sql 0 iphone gps location power-management mkmapview

如何在不运行GPS更新位置的情况下在mapView中显示用户位置(根本)?将

mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;
Run Code Online (Sandbox Code Playgroud)

做这个工作还是GPS还会在后台烧电池?

谢谢 :)

jac*_*ash 5

我将尽力回答你的问题,因为我可以提供有限的信息.

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

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

一个MKMapView将显示用户位置的蓝色圆点,如果你设置showsUserLocationYES.在MKMapView将使用所有可用的定位方法,以尽可能准确地找到用户的位置,并不断更新它,而它被设置为YES.

跟踪MKMapView,一种将用户位置保持在屏幕中心的模式,在用户移动时移动可见地图区域,并在iOS5中可用.你有三个MKUserTrackingMode可供选择.来自文档:

MKUserTrackingModeNone:地图不遵循用户位置.

MKUserTrackingModeFollow:地图跟随用户位置.

MKUserTrackingModeFollowWithHeading:地图跟随用户位置,并在标题更改时旋转.

因此设置它kCLLocationAccuracyNearestTenMeters不会起作用,因为它不是此上下文中的可用选项.

显示位置会在后台刻录电池吗?这取决于你的背景意味着什么.当用户轻敲主页按钮时,MKMapView系统强制停止使用GPS.当应用程序运行且MKMapView处于活动状态并且showsUserLocation设置为属性时YES,它将继续使用任何可用的方法(包括GPS)来更新位置.你有几个减少这个的策略.

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

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

正如您所看到的那样,2号工作更多,但非常节能.数字1很简单,但在地图可见时会使用更多电池.由您决定用户期望的行为并相应地实施您的应用程序.