地圖位置刷新的代理didUpdateLocations會持續調用,手機非常耗電
但是在實際開發中,有一些APP確實需要用到持續定位的功能,比如:運動類, 導航類, 天氣類等等
如何進行持續定位呢?保證持續定位的前提下降低APP的耗電量呢?

distanceFilter:距離過濾器
在生成更新事件之前, 設備的最小距離(以米為單位), 必須是水平移動.
這句就是設置這個值會在執行didUpdateLocations方法前判斷水平移動距離是否達到這個值

當然僅僅這樣還是不夠的. 我們還可以設置GPS的精度


譯文:
desired Accuracy
位置數據的准確性。
概述
接收機盡力達到要求的准確度; 然而,實際的准確性並不保證。
您應該為此屬性指定適合您的使用情景的值。例如,如果您僅在一公里內需要當前位置,您應該指定kCLLocationAccuracyKilometer而不是kCLLocationAccuracyBestForNavigation。確定更精確的位置需要更多的時間和更多的功率。
當請求高精度位置數據時,由位置服務傳遞的初始事件可能不具有您請求的准確性。定位服務盡快提供初始事件。然后,隨着數據可用,您可以根據需要繼續確定所請求的准確性,並提供其他事件。
對於iOS和MacOS,此屬性的默認值為kCLLocationAccuracyBest。對於watchOS,默認值為kCLLocationAccuracyHundredMeters。
此屬性僅與標准位置服務結合使用,並且在監視重大位置更改時不使用。
/**
kCLLocationAccuracyBest; //最好的,米級
kCLLocationAccuracyNearestTenMeters; //十米
kCLLocationAccuracyHundredMeters; //百米
kCLLocationAccuracyKilometer; //一公里
kCLLocationAccuracyThreeKilometers; //三公里
*/
//持續定位
/**
1.開啟開始定位之后,不關閉,讓其持續定位
2.設置距離篩選器:坐標移動到指定距離才會調用代理方法
3.設置精准度:通過降低計算的過程(GPS),來達到省電的目的
**/
//iOS定位方法:1.GPS全球定位系統(24顆) 2.移動基站 3.Wifi
//傳入的是double值,單位是米,這里傳入10,表示距離移動超過十米,才會調用代理方法
self.locationManager.distanceFilter = 10;
//GPS精准度 默認值:kCLLocationAccuracyBest 最精准:kCLLocationAccuracyBestForNavigation
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
