0

iPhoneのウォーキング・ランニング時の距離を計算するアプリを作りました。

私は自分のアプリケーションを他の実行中のアプリケーションと比較しましたが、誰も同じ距離を示していません。

Nike GPS : 2.1 Km
Runtastic : 2.5 Km
My App : 2.9 Km

距離を計算するためのルーティングは次のとおりです。

- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation

 {
 float distInMeter = [newLocation distanceFromLocation:oldLocation]; // which returns in    meters
 }

distInMetersそして、別の変数に連結します。

これらのアプリケーション間になぜこのような違いがあるのでしょうか? 距離をより正確に計算する別の方法はありますか?

ご協力いただきありがとうございます。

4

3 に答える 3

1

これらのアプリは長い間、不正確な GPS データを処理してきたため、その場所でのランダムなジャンプをスムーズにする方法を作成してきました。あなたの実装では、古いデータや偽のデータが考慮されていません。

Ramer–Douglas–Peucker アルゴリズム( Javascript のアルゴリズムはこちら)を実装するか、これらの非常に 複雑な論文を読むか、古い GPS 測定値や非常に異なる GPS 測定値を破棄して、より正確な測定値が得られるまで待つことができます。

于 2013-08-11T14:24:22.420 に答える
0

このような違いは、ロケーション マネージャーがユーザーの位置を提供する方法によって発生する可能性があります。ある方向に歩いていて、GPS がその方向から完全にずれている位置を示しているとしますが、次の方向は再び軌道に乗っています。オフだったものを考慮すると、ユーザーが実際に移動した距離よりも多くの距離を考慮していることになります。したがって、それを除外する必要があります。

GPS が本来よりも離れた別の位置を示した場合も同様です。ユーザーが時速 4 マイルでジョギングしているとします。ユーザーが突然時速 100 マイルで走り始めることはあり得ないので、それも除外する必要があります。

基本的に、発生する可能性が非常に低いものを除外する必要があります。そうすることで、より正確な距離を得ることができます。

于 2013-08-11T12:35:27.337 に答える
0

GP の位置は、距離を計算する前にフィルタリングする必要があります。各場所間のすべての距離を単純に合計することはできません。距離関数は正しいですが、フィルタリングは正しくありません。マップ (mkMapView) 上のすべてのポイントを視覚化するだけで、低速で gps がジグザグのランダムなエラー ラインを作成することがわかります。このビジュアライゼーションから、距離がはるかに長い理由が明確にわかるはずです。

于 2013-08-11T23:03:29.833 に答える