2011-09-13 7 views
1

私は、lat、lonの4つのCLLocationCoordinate2D点で構成される四角形を持っていて、私はメートル単位で四角形の領域を探したいとします。私はCLLocationCoordinate2D点をMKMapPointsに変換し、X-Y空間内にその領域を見つける。しかし、私が見つけた領域はメートルに直接変換されないMKMapPointの単位です。 MKMapPoint空間のこの領域をメートルに変換するにはどうしたらいいですか?iphone - メートルまでのMKMapPointの距離を変換する

答えて

7

MapKit関数MKMetersBetweenMapPointsを使用すると、これが簡単になります。

たとえば、現在表示されている領域の面積を取得したい場合:「アカウントに地球の曲率を」

MKMapPoint mpTopLeft = mapView.visibleMapRect.origin; 

MKMapPoint mpTopRight = MKMapPointMake(
    mapView.visibleMapRect.origin.x + mapView.visibleMapRect.size.width, 
    mapView.visibleMapRect.origin.y); 

MKMapPoint mpBottomRight = MKMapPointMake(
    mapView.visibleMapRect.origin.x + mapView.visibleMapRect.size.width, 
    mapView.visibleMapRect.origin.y + mapView.visibleMapRect.size.height); 

CLLocationDistance hDist = MKMetersBetweenMapPoints(mpTopLeft, mpTopRight); 
CLLocationDistance vDist = MKMetersBetweenMapPoints(mpTopRight, mpBottomRight); 

double vmrArea = hDist * vDist; 

ドキュメントは、関数が取ると述べています

+0

ありがとう、これはかなり役に立ちます。私は不規則な多角形を持っている場合はどうなりますか?頂点に与えられたポリゴンの面積の公式がありますが、私はMKMapPoint単位で計算しています。私はそれらをメートルにどのように変換しますか? – Paul

+0

質問は "正方形"だから私は長方形の領域の例を与えた。それでもなお、上記は依然として近似値であり、曲率が重要な要素ではない比較的小さな領域に対してのみ有用である(但し、_distance_関数は関係なく正確である)。不規則なポリゴンについては、私は簡単な答えがありません申し訳ありません。 [この回答](http://stackoverflow.com/questions/1340223/calculating-area-enclosed-by-arbitrary-polygon-on-earths-face)から始めてみてください。どんなアルゴリズムを使用してそこから行くかを決める必要があります。 – Anna

+0

いいです、ありがとう! – Paul

0

地球が完全球であると仮定して、Haversine formulaを使用して計算することができます。

lat/lon vs metersが地球の状況でどのように機能するかを理解するには、Nautical milesを読むのが面白いかもしれません。

objective-c Haversine formulaでグーグルでいくつかのサンプルコードとリソースを見つけることができます。

お楽しみください!

関連する問題