0

CLLocationManager を使用して、ユーザーが移動した距離を積極的に (そして正確に) 追跡する方法を知りたいです。現在、私のコードは次のようになっています。

- (void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*)oldLocation {
    totalDistance += [newLocation distanceFrom:oldLocation] / kMilesToMeters;
}

ただし、走行距離計で確認したところ、結果はかなり不正確です。ユーザーの移動中に距離をアクティブに計算するより正確な方法はありますか?

ありがとうございました

4

1 に答える 1

1

GPSは非常に不正確です。時々それはあなたをどこかに「テレポート」してからあなたを連れ戻すことができます。したがって、最初に行う必要があるのは、すべての誤ったデータを除外することです。頻繁に変更される場所は無視できます。たとえば、GPSは、p1(x、y)にいることを示し、数秒後にp2(x + 20m、y + 10m)にいることを示します。あなたの場所はp3(x + 2m、y + 3m)です。したがって、明らかに、p2はおそらく誤った場所であり、無視してかまいません。

また、距離を計算するために場所を直接使用するのではなく、それらの値を徐々に概算することもお勧めします(最小二乗法が適しているか、難しい計算が好きな場合は、カルマンフィルターを見ることができます)。

于 2012-07-18T00:51:35.897 に答える