假设我有一个由四个CLLocationCoordinate2D点组成的正方形,它们位于lat,lon,我想找到以米为单位的正方形区域。我将CLLocationCoordinate2D点转换为MKMapPoints,然后在X-Y空间中找到该区域。但是,我找到的区域是MKMapPoint的单位,它不直接转换为米。如何将MKMapPoint-space中的这个区域转换回米?
答案 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找到更多资源和一些示例代码。
享受!