0

iPhoneを使ってコアロケーションを利用して、レーシングカーのレーシングトラックでの距離を計算したいです。シナリオは、一度に 1 台の車だけがコース上にあり、コースも直線ではありません。トラックで車を1台ずつテストし、トラックがまっすぐではないことがわかっているときのTopGearプログラムに似ています。

緯度、経度、速度を取得し、Web サーバーに送信してリアルタイムで監視しています。

私が直面している問題は次のとおりです。

1> 車が線路上を走るとき、ジグザグに走ることができます。線路は広く、車は左、中央、または右の車線を走ることができます。車のシフトレーンでは、緯度と経度も記録されます。紙に上から下に蛇の形を描いてから、上から下に直線を描くと、私のシナリオでも同じことが言えます。実際の距離が必要ですか?

いくつかのこととチュートリアルを試しましたが、デバイスでコードを実行し、部屋を前後に歩いた後、距離が増え続けていますが、それらの小さな動きを避けることができない場合、正しい距離を取得するにはどうすればよいですか?

2> たとえば、トラックが「U」の形をしてdistanceFromLocation:いて、それを使用すると「U」の点から点までの距離が得られますが、「U」のトラック全体の距離は得られません。たとえば、車が「U」の左の点から「U」の右の点まで出発するように。「U」距離全体を計算する方法は?

私はこのチュートリアルに従っています。

4

3 に答える 3

1

すべてのポイントを記録している場合は、それらをループして、ポイントの各ペア間の距離を合計できます。すべてのポイント間の距離を取得するには (疑似コード):

double distance = 0;
CLLocationCoordinate2D p1 = ...;
CLLocationCoordinate2D p2 = ...;

for (NSInteger i = 0; i < count; i++) {
    distance += [self metresBetweenPlace1:p1 place2:p2];

    p1 = p2;
    p2 = ...;
}

- (double)metresBetweenPlace1:(CLLocationCoordinate2D)place1 andPlace2:(CLLocationCoordinate2D)place2
{
    MKMapPoint start = MKMapPointForCoordinate(place1);
    MKMapPoint finish = MKMapPointForCoordinate(place2);

    return MKMetersBetweenMapPoints(start, finish);
}
于 2013-04-26T19:21:44.533 に答える