MKMapView如何将经度纬度转换回cm?

时间:2014-01-13 13:58:24

标签: ios mkmapview mapkit

1)我使用MKMapView在MKOverlayView中显示自定义图像(例如宽度= 350厘米,高度= 230厘米)。

2)图像的中心现在位于经度= 0且纬度= 0并覆盖整个世界

4)我在经度= 60.749995和纬度= 56.091651放置一个MKPointAnnotation

现在我希望将此点(经度,纬度)转换回x,y(cm) 这样我就可以在服务器上创建一个带有注释的JPG。

那么如何计算x,y值?

Thanx Craig

如下所示:

CLLocationCoordinate2D coordinateOrigin = CLLocationCoordinate2DMake(90, -180);
CLLocationCoordinate2D coordinateMax = CLLocationCoordinate2DMake(-90, 180);


MKMapPoint maxMap=MKMapPointForCoordinate(coordinateMax);
MKMapPoint minMap=MKMapPointForCoordinate(coordinateOrigin);

double width = maxMap.x-minMap.x;
double height = maxMap.y-minMap.y;

MKMapPoint p =  MKMapPointForCoordinate(wanted_coord);//wanted_coord is the one needed
double pixel_x=p.x/width;
double pixel_y=p.y/height;

1 个答案:

答案 0 :(得分:1)

1)你并没有真正处理cm,你正在处理像素。图像在每个方向上都有一定数量的像素,cm的物理测量值取决于屏幕/打印机像素的大小。

2)通过MKMapPointForCoordinate函数将lat long转换为像素使用MKMapPoints。这将为您提供x / y坐标,您需要缩放这些值以适合您的自定义图像,因此您需要确定它涵盖的MKMapPoints。例如,如果您的图像覆盖整个世界,您可以使用MKCoordinateForMapPoint(-180,-90)和最大值(180,90)找到MKMapPoint的最小值。现在你将获得MKMapPoint的x和y的最大/最小值,你知道你的图像的最大/最小值,所以从一个缩放到另一个是微不足道的。