iPhone では、ユーザーの位置を度数で取得します。たとえば、緯度 39.470920 および経度 = -0.373192; です。それがポイントAです。
別の GPS 座標 (10 進度単位) を持つ線をポイント B に作成する必要があります。次に、A から B への線と別の点 C の間の距離 (垂直) を計算します。
問題は、度の値と混同されることです。結果をメートルで表示したいと思います。必要な変換は何ですか?これを計算するための最終的な式はどのようになりますか?
iPhone では、ユーザーの位置を度数で取得します。たとえば、緯度 39.470920 および経度 = -0.373192; です。それがポイントAです。
別の GPS 座標 (10 進度単位) を持つ線をポイント B に作成する必要があります。次に、A から B への線と別の点 C の間の距離 (垂直) を計算します。
問題は、度の値と混同されることです。結果をメートルで表示したいと思います。必要な変換は何ですか?これを計算するための最終的な式はどのようになりますか?
使用 - (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];
ウィキペディアの地理的距離と大圏距離の記事を見てください。彼らはあなたが必要とする公式を提供します。
クリストフが示唆したように、問題の難しい部分はおそらく 3 空間でよりよく解決されます。
私の提案する解決策(申し訳ありませんが、コードはありません)-球状の地球を想定しています:
ユニバーサル横メルカトル (UTM) 座標系と、東座標と北座標の用語を調査する必要があります。基本的な考え方は、GPS 座標 (WGS84 座標系) をある地点からの距離に変換することです。UTM の場合、北距は赤道からの距離であり、東距は選択した子午線からの距離です。この変換を使用すると、2 点間の実際の距離を正確に近似することができます。
緯度の場合、1 度は約 1852 メートルです。
経度の変換は、緯度によって異なります。数学は私には少しあいまいですが、COS(緯度 * PI / 180) * 1852 のようなものだったことを覚えているようです。