2011-08-09 4 views
11

iPhoneでは、ユーザーの位置を小数点以下の桁数で取得します(例:latitude 39.470920 and longitude = -0.373192;つまり、そしてIはまた、小数度に、座標別のGPS付きラインを作成する必要がある点A.距離を計算するためにGPS座標を度単位で計算する

、点Bだ、AからBへの線と別の点C

間(垂直)までの距離を計算します

問題は、度の値と混同してしまうことです。私はメートルで結果を持っていたいと思います。変換には何が必要ですか?最終的な式はどのようにこのように見えるでしょうか?

+0

私も同じ問題を抱えていますが、ここでは2つの答えのどちらもこれを解決していません。 RabinDevの答えはより近づいたが、彼はメートル変換問題に度を解決しなかった。任意のヒント? –

答えて

1
  • (CLLocationDistance)distanceFromLocation:(const CLLocation *)locationは、CLLocationから別の場所への距離を取得する方法です。

あなたの問題は、私はあなたの3 CLLocationsが近く(未満、数キロ離れている)であれば、あなたが数学を行うことができますね行(A、B)と点C 間の最短ラインを見つけるのもあります「あたかもあたかもその座標が1つの平面上の点であるかのように、C++でthis、またはthisまたはthisを使用し、CLLocationsを平面上のx座標とy座標として使用します。

座標が離れている場合、正確な精度が重要な場合は、地球の球形が重要です。球の面にgreat circle distanceと他のジオメトリを使用する必要があります。

+0

こんにちは、どのようなサンプルの例を送ってください – Durga

+0

プラス超奇妙な球の参照のために+1してください。 :-) – eric

28

CLLocationdistanceFromLocation:の方法を使用しないでください。これは、受信機と別のCLLocationの間の正確な距離を示します。

CLLocation *locationA = [[CLLocation alloc] initWithLatitude:12.123456 longitude:12.123456]; 
CLLocation *locationB = [[CLLocation alloc] initWithLatitude:21.654321 longitude:21.654321]; 

CLLocationDistance distanceInMeters = [locationA distanceFromLocation:locationB]; 

// CLLocation is aka double 

[locationA release]; 
[locationB release]; 

これは簡単です。

+0

こんにちはToastor任意のサンプルの例を送ってください – Durga

+0

完了します。しかし、そのようなものは参照ライブラリから学ぶのは簡単です。私は私の答えにリンクを掲載しました。あなたはそれを見てみたいかもしれません。 – Toastor

関連する問題