簡體   English   中英

如何手動觸發CLLocationManager更新?

[英]How to manually trigger CLLocationManager update?

我正在使用以下配置監視用戶位置:

    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyThreeKilometers
    locationManager.requestAlwaysAuthorization()
    locationManager.startMonitoringSignificantLocationChanges()

我有一個開關,允許用戶手動輸入地址或進行GPS跟蹤。 從手動位置切換到GPS位置時,我想踢CLLocationManager來更新用戶位置並調用didUpdateLocations事件。 否則,它只是等待並等待更新。 可以一次手動觸發更新嗎?

一次可能手動觸發更新

是的,但不是帶有startMonitoringSignificantLocationChanges 您將需要調用startUpdatingLocation 請注意,即使這樣,在獲得單個可用更新之前,可能還需要多次致電您的委托人和幾秒鍾。

我做什么( 例如代碼在這里 )是看雙方horizontalAccuracytimestamp ,當我要么得到一個足夠精確的位置太多時間流逝停止。

當您要開始掃描更新時啟動它,但是當您想要直接位置時則不啟動它。

如果要立即定位,請使用manager.location請求。 如果響應nil則當前沒有可用位置,您需要等待。 如果返回了位置,則可以檢查timestamp以確定是否可以使用它。

從文檔:

startUpdatingLocation

連續多次調用此方法不會自動導致生成新事件。 但是,在兩者之間調用stopUpdatingLocation確實會導致下次調用此方法時發送新的初始事件。

因此您可以停止並立即重新啟動位置更新以手動觸發它!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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