2012-04-25 16 views
1

私にはCLLoctionCoordinate2Dがあり、そこからどのような距離が離れているか把握したいと思います。たとえば、100マイルを使用できます。だから、コンピュータの北、南、東、西への100マイルのポイントをコンピュータに欲しい。位置座標を別の座標から一定の距離を計算する

東西はかなり簡単です。私は両方の座標をMKMapPointsに変換し、distanceInMeters * MKMapPointsPerMeterAtLatitude(latitude)を使用しました。これは、緯度が一定であるため、東と西の両方でうまく動作します。

ただし、北と南では機能しません。北側は過小評価され、南側は過小評価されます(移動するとMKMapPointsPerMeterAtLatitudeが変更されるため)。北と南のこれらの点をどうすれば計算できますか?

+1

CLLocation distanceFromLocation:メソッドで実際の距離をループしてチェックできませんか?それはコンピュータのサイクルであまりにも高価すぎてはいけません。 –

+0

私はそれを考えましたが、もう少しエレガントなものを見つけたいと思っていました。 –

答えて

2

緯度ごとに60海里あります。これは経度にも当てはまりますが、赤道でしかありません。航海距離で経度を計算するには、経度* 60nm * cos(ラジアンでの緯度)で距離を掛けます。

MKMapPointsではなく、新しいポイント(北100マイル、南100マイルなど)の計算を行い、lat/lon(CLLocationCoordinate2D?)ポイントをMKMapPointsに変換します。

0

緯度の線は、地球の中心から測って常に一定の角度で離れています。ちょっとしたポイントです。だから、あなたがする必要があるのは、彼らが何マイル離れているかを考えて、北/南100マイルを得て、そのマップポイントを得ることです。地表面の距離の公式はおそらくメートルまたはキロメートルのどこかでオンラインになります。

関連する問題