2009-02-24 13 views
6

私のiPhoneアプリにGPS機能を追加することを試しています。ウォーキングやランニング中に使用されるワークアウトアプリです。だから私がGPSを使用したいのは、人がMphと分/マイルで移動する速度を示すことです。iPhone CoreLocation:最も正確な速度を得る方法

最良の結果が得られるようにCLLocationManagerをどのように設定する必要がありますか? desiredAccuracyとdistanceFilterを何に設定する必要がありますか?

私が試した

distanceFilter = 10とdesiredAccuracy = kCLLocationAccuracyNearestTenMeters

CLLocation.speedプロパティを読んでのテストは、私の車の中で車を運転しながら、精度が良いようです更新にはしばらく時間がかかりますが、車速計と比較して私は更新の遅れがGPSの位置を照会するのにかかる時間かもしれないが、上記の2つのパラメータを変更するとより良い結果が得られるかどうかはわかりません。

distanceFilterにはkCLLocationAccuracyBestと他の値を使用する必要がありますか?

他の人からCoreLocationを使用してスピードを上げることに興味があります。より正確な結果を得るために何をしていますか?

答えて

3

免責事項:私はCoreLocationで少ししかプレイしていませんが、私は正確さを非常に厳密にテストしていません。

distanceFilterとdesiredAccuracyのデフォルトを使用すると、最も正確な結果が得られると思います。あまり頻繁でない更新は、使用するデータ量が少なくてすみます。

あなたが遭遇する可能性のある問題は、場所の修正がしばらくの間失われた後に戻ってしまうことです。距離を計算するための素朴でつながりのあるアプローチは、走者の実際のスピードを過小評価する傾向があります。 CLLocation.speedを使用するのではなく、実際に走っているラインに対するヒューリスティックな近似に基づいて速度を計算したほうが良いでしょう。

5

最高の結果を得るには、kCLLocationAccuracyBestを使用する必要があります。あなたが距離フィルターに入れていることは、あなたが入れたいと思う不具合によって決まります。基本的には、精度と可用性に基づいて意思決定を行う必要があります。つまり、最高精度の回答が得られない期間には、何を表示しますか?

1つのアプローチでは、電話機の精度の低い回答を返信し、最後に正確な情報が得られたときの予測を使用して、自分が持っているものが適切かどうかを確認します。

つまり、北朝鮮に6mphでジョギングしているとします。あなたはポイントA、ポイントB、ポイントCに沿って私をプロットします...そして、低精度の回答を得るでしょう(多分kCLLocationAccuracyNearest100Meters。)私が言っている場所を見て、可能なスピードの変化を合理的に調整して、現在のパスに沿って続けていけば、ポイントCからスポットを当てることができますか?」そうであれば、新しい点は可能性の範囲内にある。 (そうでない場合は、それを投げ捨ててください。)そして最後に知られたスピードでC点から飛び出して、私がおそらく夢中に思うところを見つけ出してください。それを弾道点Dとして保存します。

もちろん、加速度計を使って慣れている感覚を得ることができますか?だから、あなたは方向を知ることができません(あなたは電話がどのような方向を指しているのかわかりませんが)。

これらの情報をすべて使用して、おそらく私が思うところで最も可能性の高いスポットをプロットします。

注:テストするときは、セルの有効範囲の領域を運転しないでください。あなたのアプリが丘の中でどのように携帯電話から離れているかを見てください。多くの人が自転車に乗って&ジョグそれらの領域!

関連する問題