2015-05-04 46 views
0

我監視用戶的位置。這些結構:如何手動觸發CLLocationManager更新?

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

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

回答

0

手動觸發更新一次可能

是的,但不是startMonitoringSignificantLocationChanges。您需要致電startUpdatingLocation。請注意,即使這樣,在您獲得單一可用更新之前,可能需要多次撥打您的代理人,幾秒鐘。

我做什麼(example code here)是看雙方horizontalAccuracytimestamp,並停止當我要麼得到足夠精確的位置太多時間的流逝。

0

當你想開始掃描更新時啓動它,但當你想要一個直接的位置時啓動它。

如果你想要一個直接的位置,請用manager.location。如果回覆是nil,那麼目前沒有位置可用,您需要等待。如果某個位置已經退回,您可以檢查timestamp以確定您是否可以使用它。

0

從文檔:

startUpdatingLocation

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

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