2011-09-13 45 views
1

假设我有一个正方形,它由四个CLLocationCoordinate2D点组成,这些点位于lat,lon,我想要以米为单位查找平方的面积。我将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

这个问题说“方”,所以我举了一个矩形区域的例子。即使如此,上述方法仍然是一种近似方法,仅适用于曲率不是重要因素的相对较小的区域(尽管_距离函数无论如何都是准确的)。对于不规则的多边形,抱歉,我没有一个简单的答案。尝试从[这个答案]开始(http://stackoverflow.com/questions/1340223/calculating-area-enclosed-by-arbitrary-polygon-on-earths-surface)。您必须决定要使用哪种算法并从那里开始。 – Anna

+0

好听起来不错,谢谢! – Paul

0

您可以使用Haversine formula来计算它,假设地球是一个完美的球体。

要了解纬度/经度对米在地球环境中的工作原理,您可能会发现阅读Nautical miles有趣。

您可以通过使用Google搜索objective-c Haversine formula找到更多资源和一些示例代码。

享受!