2013-01-20 28 views
3

我正在使用CLLocationManager的實例以及用於我的應用程序的MKMapView。我有一個點擊按鈕,將觸發我的位置管理器的startUpdatingLocation,它允許我通過didUpdateToLocation回調接收新的位置更新。我停止這些更新一次,我很滿意精度:爲MKMapview停止用戶位置更新(藍點)

[locationManager stopUpdatingLocation]; 
locationManager.delegate = nil; 

的問題是,通過在狀態欄的右上角的箭頭標誌指示的GPS保持開啓。經過進一步調查,我意識到這是由於mapView具有showsUserLocation = YES的事實,這意味着即使我自己的locationManager實例已停止更新,它仍將繼續接收更新。

在停止更新後添加以下內容會關閉GPS標誌,但藍色圓點顯然會消失(但我確實希望當前位置仍然可視)。

mapView.showsUserLocation = NO; 

對於我的應用程序,我需要同時使用CLLocationManager(CLLocationManager爲計算在一定距離內的POI附近)和的MKMapView(主要針對這些興趣點的顯示爲註釋在我locatiom)。有沒有一種方法可以簡單地停止所有的GPS更新,並凍結當前的藍點?

我想完全禁用mapView.showsUserLocation,並將CLLocation從LocationManager作爲自定義註釋繪製到mapView,但我不確定這是否是最佳方式。有任何想法嗎?

+1

如果您將'showsUserLocation'設置爲'YES',那本質上意味着您想保留位置服務。顯示用戶**以前的位置**沒有顯示他們的位置,但他們的*歷史*。除非定位服務處於開啓狀態,否則您無法知道該位置未更改。即使使用* geofencing *仍然使用位置服務。我認爲在地圖上有一個* stale *用戶位置點會讓用戶感到困惑。但是,如果你真的想這樣做,我認爲繪製自己的自定義註釋(使用註釋視圖是一個藍點圖像)將是一條路。 – Nate

回答

1

我認爲,一旦你完成了更新地點到所需的準確性,刪除註釋引腳將足以讓用戶知道所選位置。這在MKMapView的用法中是非常標準的。

另一件需要考慮的事情是,即使在停止監視位置後,位置箭頭實際上仍會持續一段時間(取決於使用的類型)。您可以從Apple找到位置指南持續多久,但也需要考慮。

相關問題