iphone - 将MKMapPoint距离转换为米

时间:2011-09-13 01:42:00

标签: iphone objective-c google-maps mapkit

假设我有一个由四个CLLocationCoordinate2D点组成的正方形,它们位于lat,lon,我想找到以米为单位的正方形区域。我将CLLocationCoordinate2D点转换为MKMapPoints,然后在X-Y空间中找到该区域。但是,我找到的区域是MKMapPoint的单位,它不直接转换为米。如何将MKMapPoint-space中的这个区域转换回米?

2 个答案:

答案 0 :(得分:8)

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;

文件说明该功能“考虑了地球的曲率。”

答案 1 :(得分:0)

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

要了解纬度/经度与米在地球环境中的作用,您可能会发现阅读Nautical miles很有意思。

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

享受!