簡體   English   中英

iPhone:如何在不更新位置/在后台運行GPS的情況下在地圖視圖上顯示用戶位置?

[英]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種主要模式,從低功耗到高功耗,從低精度到高精度。

  • 位置追蹤
  • 后台位置更新(使用手機信號塔和wifi)
  • GPS位置更新

如果將showsUserLocation設置為YESMKMapView將在用戶位置顯示一個藍點。 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM