2017-03-03 232 views
0

你好,我目前正在開發一個使用Mapkit的IOS應用程序。我的應用程序正在使用locationmanager來獲取用戶位置和setregion。現在正在發生的奇怪事情是,當我處於不同的位置時,動畫到setregion所需的時間是不同的。didUpdateLocations花費很長時間來加載

例如,當我在學校的細胞信號弱。當我在家中蜂窩信號強的地方時,mapkit設置區域所花費的時間大約延長了10倍。

我目前使用requestLocation()來調用didupdatelocation函數和web上的人們建議使用startUpdatingLocation。關於這一點的是,我只想在我的應用程序中設置一次setregion。而didupdatelocation正在不斷的做。

我有點卡住,不知道從哪裏開始解決這個問題。請幫忙!

+0

'requestLocation()'將等待長達10秒鐘,試圖找到一個與您在位置管理器上設置的'desiredAccuracy'一樣精確的位置。調用'didUpdateLocation'花費的時間不過需要很長時間才能獲得準確的位置。 – dan

回答

0

例如,當我在移動電話信號較弱的學校時。當我在家中蜂窩信號強的地方時,mapkit設置區域所花費的時間大約延長了10倍。

  • 這是一個預期的行爲。檢索位置是網絡密集型任務,但要配置位置管理器的desiredAccuracydistanceFilter屬性,然後調用requestLocationstartUpdatingLocation
  • 永遠不要指定大於您所需的精度值。 Core Location使用您指定的準確度值更好地管理電源。
    更高的準確度要求更精確的硬件,如GPS,這會消耗更多的功率。

關於這一點的事情是,我只想在我的應用程序中設置一次setregion。

  • 傳遞一個nil消息給CLLocationManager實例將防止任何連續didUpdateLocation:調用。
+0

感謝您的回答。說得通!和對不起,我對Swift有點新,但是如何將一個零消息傳遞給CLLocationManager?謝謝 – JackieXY