我读了苹果文档
“地图点是墨卡托地图投影上的x和y值” 点是与UIView的坐标系相关联的图形单元
Point和MKPoint在逻辑上有什么区别? 我显然需要CGPoint在屏幕上显示一些东西。 那么为什么MapKit需要MKMapPoint?
答案 0 :(得分:2)
MKMapPoint是一个地理点 - 投射转换的纬度和经度。在屏幕上,您有一些包含mapView的有界视图。并且您需要将地理位置(坐标)转换为mapView上的CGPoint
CLLocationCoordinate2D coord;
coord.latitude = location.latitude.doubleValue;
coord.longitude = location.longitude.doubleValue;
MKMapPoint point = MKMapPointForCoordinate(coord);
CGPoint cgpoint = [mapView convertCoordinate:coord toPointToView:mapView];
答案 1 :(得分:2)
CGPoint
和MKMapPoint
结构碰巧存储两个名为x
和y
的浮点值这一事实无关紧要。
它们被赋予不同的名称,因为它们在逻辑上处理不同的坐标系,变换,范围和尺度。
2D世界地图需要一个大而固定的坐标系统,无论当前部分是什么,都可以将纬度和经度转换为地图上的固定点正在屏幕上显示。
MKMapPoint
值的范围很大,因为它们需要以足够高的分辨率(超出屏幕尺寸)来表示世界坐标。
但是,您并不需要关心MKMapPoint
的实际值。有时,您可能需要将CLLocationCoordinate2D
转换为MKMapPoint
(或者相反),但您不需要担心这些值,也不应该存储它们(文档建议不要这样做)因为将经度和经度转换为2D投影的内部投影计算可能会在iOS版本之间发生变化。)
您对MKMapPoint
的使用仅基于您正在处理地图的2D投影独立设备的屏幕尺寸或地图当前正在显示的部分。< / p>
我显然需要CGPoint在屏幕上显示内容。
是的但是在添加注释或叠加层时,您通常会处理CLLocationCoordinate2D
值并让地图视图根据需要进行转换。