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;
答案 0 :(得分:1)
1)你并没有真正处理cm,你正在处理像素。图像在每个方向上都有一定数量的像素,cm的物理测量值取决于屏幕/打印机像素的大小。
2)通过MKMapPointForCoordinate函数将lat long转换为像素使用MKMapPoints。这将为您提供x / y坐标,您需要缩放这些值以适合您的自定义图像,因此您需要确定它涵盖的MKMapPoints。例如,如果您的图像覆盖整个世界,您可以使用MKCoordinateForMapPoint
(-180,-90)和最大值(180,90)找到MKMapPoint的最小值。现在你将获得MKMapPoint的x和y的最大/最小值,你知道你的图像的最大/最小值,所以从一个缩放到另一个是微不足道的。