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