2011-11-07 73 views
5

我在我的iPhone應用程序中遇到以下問題:位置管理器給舊位置帶新時間戳

我定期啓用位置管理器,並且等待多個位置更新。當接收到一個新的位置,我檢查了新位置的時間戳屬性知道它是否是一個老位置或不:

我現在遇到的問題是,我收到新的位置,其中時間戳是新但座標仍然是我之前收到的舊地點。當我以120km/h的速度駕駛我的賽車接收到相同的座標多次但有不同的時間戳時,我進行了測試。我在iOS 4中遇到同樣的問題& 5.

這怎麼可能?或者我該如何處理這個問題?

+0

你問cllocationmanager的準確度是多少? – jackslash

+0

@jackslash:我使用'desiredAccuracy = kCLLocationAccuracyBest' – wjans

+0

請發佈'-locationManager:didUpdateToLocation:fromLocation:'的實現。 –

回答

1

iPhone有幾種方式獲取其位置。

  • 細胞信號
  • WiFi接入點
  • GPS衛星

最快位置查找是細胞信號位置。只要你有數據,最近大部分的本地塔將被緩存。細胞塔的精確度可以從500m到1500m或更多。

第二快,只要你有數據連接或最近在該地區是wifi查找。這將提供一個非常準確的位置。要注意的是,你必須在無線網絡周圍,並有一個很好的數據信號。

最慢的是GPS。 iPhone中的GPS是aGPS。它使用來自手機信號塔位置的數據更好地修復您的位置。如果手機沒有數據連接並且不在wifi附近,則可能需要2到4分鐘才能獲得修復。使用手機信息塔可能需要30秒。

從蘋果文檔:

當要求高精度的位置數據,通過位置服務交付的初始事件可能沒有您所要求的精度。定位服務儘可能快地提供初始事件。然後,它會繼續根據您請求的準確性確定位置,並在有數據可用時根據需要提供其他事件。

在汽車裏,你不太可能靠近wifi位置,可能不得不等待更長的GPS鎖定時間。如果locationManager認爲你仍然在前一個位置的範圍內,這可能會導致一箇舊的座標與不同的時間戳。

檢查數據的水平準確性以及時間戳以確定位置是否如您所請求的那樣精確。

+0

我甚至得到了很好的水平精度(即47.42米)的問題。唯一的問題是,該位置是舊的,但時間戳已更改。我明白它會被緩存,但是我希望時間戳是來自更早捕獲位置的時間戳,而不是更新的(更新的)時間戳。這樣我無法確定我是否沒有移動或收到舊的緩存位置。 – wjans

+0

如果水平精度有效且較小,並且時間戳是新的,則它聽起來像是一個錯誤。如果您的程序還有技術支持事件,您可以提出一個。 – jackslash

0

Cllocation管理器通過默認的更新位置作爲

locationManager.distanceFilter = kCLDistanceFilterNone;

這就是爲什麼你得到重複的座標。實際上即使在「海拔高度」發生變化時,它也會經常更新細節。

所以最好的是,你應當設置

locationManager.distanceFilter = 4.0f; 

//當u每4米移動從您目前的位置,這將只發送新的位置更新的詳細信息。

+0

您是否通過此工作解決了您的問題? –

+0

是的,它沒有竅門 – Manoj

+0

我也得到了它與時間戳,水平頻率和距離過濾器的組合使用固定.....乾杯:) –

相關問題