2009-09-06 46 views
0

我已經編寫了一個使用iPhone的相對GPS位置的iPhone應用程序。GPS位置需要幾秒鐘檢索

我在用戶界面中有一個按鈕,可以反轉地理位置(拉動街道名稱的長度和基地位置)。唯一的問題是,由於由

CLLocation *location = [[self locationManager] location]; 

檢索到的對象的位置是零,如果用戶太快輕敲按鈕。我正在初始化viewDidLoad中的LocationManager,因爲除非用戶實際加載此屏幕,否則我不想創建對象。我開始立即更新位置......但如果用戶加載屏幕並立即點擊GPS按鈕,則位置爲零。

問題出在這裏:你知道CLLocationManager需要多少時間來檢索位置嗎?

謝謝

回答

2

它可以拿起電話幾秒鐘來檢索這些數據。爲了便於使用,您可能需要停用按鈕控件。找到位置後,觸發NSNotification。註冊視圖控制器以偵聽此通知,該通知會觸發重新激活按鈕控件的選擇器。

+0

乾杯。一旦有位置顯示按鈕聽起來是個好主意。用戶可以選擇手動輸入街道名稱。謝謝! – nicktmro

+0

請記住,根據您指定的準確性設置,核心位置通常會返回一個不太準確(有時甚至是緩存)的位置,因爲它將位置置於正確的GPS位置。 – Hunter

0

獲取位置定位取決於您想要的精度數量,以及它以前是否具有某種位置數據,天氣是什麼樣,您是否在內/外......實際上不是一個答案。如果您轉到地圖應用程序並單擊「定位」按鈕,那麼您會注意到,在不同的情況下,在您開始解決過程後需要一段時間。

回調會告訴你什麼時候有數據;你不應該通過輪詢或假設即時訪問(或更糟糕的是,阻止應用程序,直到你期望找到數據)。這聽起來像是關鍵問題在於你的按鈕正在同步執行請求而不是動態的;換句話說,無論您想出什麼樣的「n」值,競爭條件都會在某個時候保證失敗。

更改您的代碼,以便按鈕在後臺調用位置獲取,然後彈出信息或稍後填寫表單。