2010-10-05 61 views
1

我已經通過測試發現,設置爲CLLocationManager的低期望精度會導致此組件的錯誤行爲。爲什麼CLLocationManager設置的準確率較低時很懶惰?

這裏有2次測試中,我所做的:

  1. 設置所需的精度kCLLocationAccuracyHundredMeters。然後,設備無法像我想要的那樣精確地找到我的位置。以下是我的CLLocationManager代表的日誌:

    Accuracy is 1500.000000 (desired accuracy is 100.000000) 
    Accuracy is 1500.000000 (desired accuracy is 100.000000) 
    

    就是這樣。在30秒內發生兩次事件,水平精度爲1500.

  2. 將慾望精度設置爲kCLLocationAccuracyBest。然後設備找到我!同樣的日誌:

    Accuracy is 1500.000000 (desired accuracy is -1.000000) 
    ... 
    Accuracy is 162.957953 (desired accuracy is -1.000000) 
    ... 
    Accuracy is 76.356886 (desired accuracy is -1.000000) 
    ... 
    Accuracy is 47.421634 (desired accuracy is -1.000000) 
    

    我在同樣的點我是爲測試1,但這個時候,該設備能夠找到我的位置,我想第一精度(即100.0)。

我已經多次重複這兩個測試很多次,爲同樣的結果。

我的問題是:

「有誰知道爲什麼當我設置的kCLLocationAccuracyHundredMeters精度的iPhone設備不加倍努力找到我的位置?」

我假設的準確性設置爲kCLLocationAccuracyBest可能會打開一些不同的硬件傳感器,但不能認爲這是一個錯誤?相對於這個問題,我找不到網上的東西。

感謝您分享您的經驗。 (測試是通過Wi-Fi和電話網絡通過3GS設備進行的)

回答

1

更精細的設置將嘗試通過單元格和Wi-Fi三角測量來定位您,但這並不準確。 kCLLocationAccuracyBest打開GPS模塊並使用它,它應該在幾英尺內。這不是一個錯誤,你在兩種情況下都得到了準確的要求。

不同之處在於GPS導致電池灼傷的可能性遠遠大於三角測量,這就是爲什麼如果您只需將設備放置在一個粗糙的區域內就不會使用它。

+0

嗨,謝謝你的回答。它可能不是一個錯誤,因爲你在最後得到了一個值,但是示例代碼「LocateMe」被竊聽了,因爲你可以看到類似這樣的內容:「if(location.accuracy 2010-10-08 10:49:25

+0

您正在請求特定的準確性。根據硬件和當前位置的不同,您可能會也可能不會得到它,因此您需要決定在這種情況下應採取的措施。例如,你可能在密集的城市中使用細胞三角測量的準確性比在中間不到的地方更好。 LocateMe把它扔掉了,你可以使用它(例如用一個更大的位置圓圈),或者稍後決定是否嘗試一次更精確的讀數,這需要權衡。 – 2010-10-08 19:35:40