2012-04-19 69 views
0

如何显示用户在mapView中的位置而不运行GPS来更新位置(完全)?请问iPhone:如何在地图视图上显示用户位置,而无需更新位置/ GPS在后台运行?

mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters; 

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

谢谢:)

+0

我认为它仍然会在后台运行GPS。 – citruspi 2012-04-19 20:04:43

+0

:/那么你将如何显示用户的位置呢? – pasql 2012-04-19 20:06:19

+1

我怀疑他希望地图静态显示(即根本不移动),同时GPS和/或CoreLocation以编程方式关闭,因此电池不会快速烧毁。 – 2012-04-19 20:08:55

回答

5

我要去尝试回答你的问题是最好的,我能给出的有限的信息。

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

  • 位置跟踪关闭
  • 背景更新位置(使用手机信号塔和WiFi)
  • GPS位置更新

MKMapView将显示用户位置的蓝色圆点,如果你设置showsUserLocationYESMKMapView将使用所有可用的位置方法尽可能准确地查找用户位置,并在设置为YES时继续更新。

跟踪MKMapView,一种保持用户位置居中显示在屏幕上的模式,当用户移动时移动可见地图区域,并在iOS5中可用。你有三个MKUserTrackingMode可供选择。从文档:

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

MKUserTrackingModeFollow:地图跟随用户位置。

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

因此将其设置为kCLLocationAccuracyNearestTenMeters不会起作用,因为它在此上下文中不可用。

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

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

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

正如你所看到的2号是更多的工作,但非常节能。数字1很容易,但在地图可见时将使用更多电池。您需要决定用户期望的行为并相应地实施您的应用程序。

相关问题