2012-04-19 44 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很容易,但在地圖可見時將使用更多電池。您需要決定用戶期望的行爲並相應地實施您的應用程序。