[英]iPhone : How do I display the user location on a map view without updating location / having GPS running in the background?
如何在不運行GPS的情況下(完全)在mapView中顯示用戶位置? 將
mapView.userTrackingMode = kCLLocationAccuracyNearestTenMeters;
該工作還是GPS仍會在后台燒電池?
謝謝 :)
鑒於有限的信息,我將盡力回答您的問題。
GPS具有3種主要模式,從低功耗到高功耗,從低精度到高精度。
如果將showsUserLocation
設置為YES
則MKMapView
將在用戶位置顯示一個藍點。 MKMapView
將使用所有可用的定位方法來盡可能准確地找到用戶的位置,並在將其設置為YES時保持更新。
MKMapView
的跟蹤(一種使用戶位置保持在屏幕MKMapView
的模式)隨着用戶移動而移動可見的地圖區域,並且在iOS5中可用。 您將獲得三個MKUserTrackingMode
可供選擇。 從文檔:
MKUserTrackingModeNone:地圖未遵循用戶位置。
MKUserTrackingModeFollow:地圖遵循用戶位置。
MKUserTrackingModeFollowWithHeading:貼圖跟隨用戶位置,並且在更改標題時旋轉。
因此,將其設置為kCLLocationAccuracyNearestTenMeters
不會起作用,因為在此情況下它不是可用的選項。
顯示位置會在后台燒毀電池嗎? 這取決於您所說的背景。 當用戶點擊主頁按鈕時,系統將強制MKMapView
停止使用GPS。 在應用程序運行且MKMapView處於活動狀態並且將showsUserLocation
屬性設置為YES
,它將繼續使用任何可用的方法(包括GPS)來更新位置。 您有兩種策略可以減少這種情況。
1)假定用戶需要在屏幕上顯示地圖時看到其位置更新。 在這種情況下,請將showsUserLocation
設置為YES,直到將地圖移出屏幕或鎖定設備,然后將其設置為NO
2)假設用戶只需要查看特定時間點的靜態位置標記即可,例如打開應用程序時。 在這種情況下,您需要創建一個CLLocationManager
對象,要求它startUpdatingLocation
,過濾委托消息以達到所需的准確性,然后關閉位置更新( stopUpdatingLocation
)。 然后,您可以將MKAnnotation
添加到MKMapView
以向用戶顯示其位置。
如您所見,數字2的工作量更大,但功率效率卻很高。 1號很簡單,但是在顯示地圖時會消耗更多電量。 由您決定用戶期望的行為並相應地實施您的應用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.