2013-02-11 67 views
2

這在CLLocationManager類引用說:CLLocationManager不是很準確inital更新

當要求高精度的位置數據,通過位置服務交付的初始事件可能沒有您所要求的精度。

這真的影響我的應用程序。我怎樣才能確保找到的位置是正確的?

我試圖使用第四次或第五次更新,而不是第一次檢索的位置,但這不是一個好的解決方案。任何想法?

回答

4

您應該檢查更新的準確性,CLLocation 包含一個屬性horizontalAccuracy,您可以使用它來檢查準確性。 當CLLocation的準確度足夠準確時,您可以使用並忽略其他準則。

Als你應該電話CLLocationManager你想要的準確性。爲此,請在CLLocationManager中設置desiredAccuracy財產。

+0

謝謝你的回答。我在其他地方看過這個解決方案,我會盡快嘗試,儘管我不知道它如何計算未知的位置精度。 – CppChase 2013-02-11 15:23:00

+0

我試了一下,它的工作非常感謝。 – CppChase 2013-02-24 08:11:39

1

我認爲你將不得不忍受這一點。這就是Apple如何實現它的。獲得細粒度的位置需要時間,只需考慮汽車上安裝任何擋風玻璃的GPS設備需要多長時間才能確定其位置。

因此,它不是讓您的應用程序等待更長時間,而是基於附近的蜂窩塔和WiFi熱點,幾乎立即提供準確的可用性。只有當有更可靠的GPS定位時,他們纔會再次打入您的應用並通知您。最後,這只是一個等待細粒度位置的問題:在您的應用程序中,您有機會使用您獲得的更粗粒度數據進行處理,或者他們的框架沒有機會在此期間做任何有用的應用。我想,讓你決定是更好的選擇。

根據應用類型的不同,您可以擁有一張地圖,一旦更好的位置數據進入,就會自動放大地圖,在您期望的位置周圍繪製一個更小的圓圈。對於最終用戶來說,等待沒有得到任何反饋。所以,即使這可能不是您所希望的答案,但我建議從用戶的角度來充分利用它。

+0

我同意強制等待用戶的時間是瘋狂的。但問題是,我的應用程序只需要一個位置,不需要更新。在地圖上沒有任何顯示。它只是獲得一個位置,並找到最近的公交車站,如果你有一個公交車站在100米以內,但沒有價值,但前幾個位置更新會給你在下一個社區的某個公交車站。 – CppChase 2013-02-11 15:16:42