2

iPhone では、ユーザーの位置を度数で取得します。たとえば、緯度 39.470920 および経度 = -0.373192; です。それがポイントAです。

別の GPS 座標 (10 進度単位) を持つ線をポイント B に作成する必要があります。次に、A から B への線と別の点 C の間の距離 (垂直) を計算します。

問題は、度の値と混同されることです。結果をメートルで表示したいと思います。必要な変換は何ですか?これを計算するための最終的な式はどのようになりますか?

4

6 に答える 6

10

使用 - (CLLocationDistance)getDistanceFrom:(const CLLocation *)場所

firstLongitude = 30.0;
firstLatitude = 30.0;

secondLongitude = 40.0;
secondLatitude = 40.0;

CLLocation *firstLoc = [[CLLocation alloc]initWithLatitude:firstLatitude longitude: firstLongitude];
CLLocation *secondLoc = [[CLLocation alloc]initWithLatitude:secondLatitude longitude: secondLongitude];

double distanceInMeters = [firstLoc getDistanceFrom: secondLoc];
于 2009-07-23T07:14:30.773 に答える
2

ウィキペディアの地理的距離大圏距離の記事を見てください。彼らはあなたが必要とする公式を提供します。

于 2009-07-23T07:09:50.923 に答える
1

クリストフが示唆したように、問題の難しい部分はおそらく 3 空間でよりよく解決されます。

私の提案する解決策(申し訳ありませんが、コードはありません)-球状の地球を想定しています:

  • A、B、C を地球の中心 E からのベクトルとして表す
  • ベクトルの外積を介して、EA (E から A へのベクトル) と EB (2 つある必要があります) の両方に直交するベクトルを見つけます。
  • ドット積を介して、2 つの直交ベクトルと EC の間の最小角度を決定します
  • 90度から引く
  • 結果の角度は、A と B が赤道上にあるように座標系を回転させた場合の C の「緯度」であり、距離に簡単に変換できます (richardtallent の回答を参照)。
于 2009-07-24T06:20:55.147 に答える
1

ユニバーサル横メルカトル (UTM) 座標系と、東座標と北座標の用語を調査する必要があります。基本的な考え方は、GPS 座標 (WGS84 座標系) をある地点からの距離に変換することです。UTM の場合、北距は赤道からの距離であり、東距は選択した子午線からの距離です。この変換を使用すると、2 点間の実際の距離を正確に近似することができます。

于 2009-07-23T07:11:03.027 に答える
0

緯度の場合、1 度は約 1852 メートルです。

経度の変換は、緯度によって異なります。数学は私には少しあいまいですが、COS(緯度 * PI / 180) * 1852 のようなものだったことを覚えているようです。

于 2009-07-23T07:13:16.327 に答える