2009-02-24 53 views
6

我正在嘗試將GPS功能添加到我的iPhone應用程序。這是一個鍛鍊應用程序,將在步行或跑步時使用。所以我想要使用GPS來顯示人員以英里/小時的速度行駛的速度。iPhone CoreLocation:如何獲得最準確的速度

我該如何配置CLLocationManager才能獲得最佳結果?我應該如何設置所需的精度和距離濾波器?

我已經試過:

distanceFilter = 10和desiredAccuracy = kCLLocationAccuracyNearestTenMeters

和閱讀

CLLocation.speed財產

測試,同時在我的車帶動周邊精度似乎不錯與汽車車速表相比,儘管需要一段時間才能更新。我意識到,更新延遲很可能是查詢GPS位置所需的時間,但我不確定是否更改上述兩個參數會給出更好的結果。

我應該使用kCLLocationAccuracyBest和distanceFilter的其他值嗎?

我很想聽聽其他人使用CoreLocation來獲得速度。你在做什麼來獲得更準確的結果?

回答

3

聲明:我只玩過CoreLocation,我沒有非常仔細地測試過這個準確性。

我希望您能通過使用distanceFilter和desiredAccuracy的默認值來獲得最準確的結果。不太頻繁的更新只會減少數據的使用。

您可能遇到的一個問題是定位失敗一段時間後又回來了。天真的,連接點的方法來計算出行駛距離往往會低估跑步者的實際速度。而不是使用CLLocation.speed,你可能會得到更好的結果,計算速度的基礎上,一些啓發式近似於跑步者實際遵循的線。

5

爲了獲得最佳效果,您應該使用kCLLocationAccuracyBest。你放入距離過濾器的內容取決於你願意放置哪些故障。基本上,你將不得不根據準確性和可用性做出決定。也就是說,在最準確的答案不可用的期間,你會顯示什麼?

一種方法是讓手機提供準確度較低的答案,並利用上次發現的最佳準確度信息的情況進行投影,看看您是否有意義。

也就是說,假設我正以6英里/小時的速度向北方慢跑。你沿着A點,B點,C點繪製我......然後你得到一個低精確度的答案(也許是kCLLocationAccuracyNearest100Meters。)看看它說我的位置,並找出「我能得到那個如果我繼續沿着我現在的路線繼續前進,對C點進行適當的調整,對可能的速度變化做出合理的調整?「如果是這樣,那麼這個新點就在可能範圍之內。 (如果沒有,然後拋出。)然後從C點以我最後已知的速度進行投射,然後找出你認爲我可能在哪裏,彈道式地。保存爲彈道點D。

當然,你正在使用加速度計來獲得某種慣性感,我去了哪個方向,對吧?所以,你無法知道方向(你不知道手機指向什麼方向),但你可以在遠處做出合理的刺。

使用所有這些信息,繪製你認爲我可能是最有可能的位置。

注意:測試時,不要只在良好的小區覆蓋區域駕駛。瞭解您的應用如何在山上執行,遠離手機。很多人喜歡騎自行車&慢跑這些地方!

相關問題