2015-02-23 42 views
0

我有一個獨特的要求來提供設備位置。這是獨一無二的,因爲我需要打開位置更新,抓取設備位置,然後立即關閉更新(關於電池壽命要求)。由於它可能需要一段時間才能拿到的位置,我對下面的代碼示例有些擔憂......使用CLLocationManager獲取單個位置更新

-(CLLocation *)getActualLocation{ 
    CLLocation *actualLocation; 
    [coreLocationManager startUpdatingLocation]; 
    actualLocation = [coreLocationManager location]; 

    // stop updates 

    return actualLocation; 
} 

...因爲調用設置任何更新將以前actualLocation將可能被執行。有關如何解決這個問題的任何建議?謝謝!

回答

1

你最好的選擇imho是等待第一個位置更新被傳遞,然後立即停止位置更新。這仍然可能會使您處於過時或非常不準確的狀態,但如果需要,您可以在代表中檢查這些狀態。

開始更新後直接獲取位置可能不會帶來好結果,因爲更新已完成異步並且結果將不可用。

iOS在位置更新期間已經在降低功耗方面做得很好,所以這應該不是什麼大不了的事。

+1

你得到的時間戳,以及該位置的精確度,這樣你就可以儘快致電'stopUpdatingLocation',你得到一個足夠近,準確。這是標準做法,所以它不是一個獨特的案例。 – 2015-02-23 20:13:18

0

Let it delegate to you

這總是需要一個異步操作,所以你必須要能更新和等待,直到你得到反饋。一旦進來,你可以從更新

相關問題