通过测试我已经意识到,当您向右(向东)方向滚动地图时MKMapView.visibleMapRect.origin.x
会增加,而当向下滚动(向南)方向时MKMapView.visibleMapRect.origin.y
会增加(假设北向上)
我的问题是:放大时为什么MKMapView.visibleMapRect.origin.x
会增加?
Isn&#t; t MKMapView
是否来自可见区域的左上角?然后,放大时不会MKMapView.visibleMapRect.origin.x
减少,因为左上角位置现在在地图上较低?
MKMapView.visibleMapRect.origin.y
会增加,因为可见区域现在实际上比以前更低了。
那么放大时为什么MKMapView.visibleMapRect.origin.x
会增加?它应该不是!!
答案 0 :(得分:3)
地图视图的visibleMapRect
属性为MKMapRect
。
MKMapRect
使用MKMapPoint
单位定义矩形。
地图的MKMapPoint
网格系统是几乎涵盖整个世界的一组固定点。
原点位于左上角,大致对应于85°N,180°W的实字坐标。
x轴从0(左/最西)开始,从右/东正向增加到一些非常大的数字。
y轴从0(顶部/最北部)开始,从底部/南部正向增加到某个非常大的数字。
visibleMapRect
表示地图当前显示的整个世界MKMapRect
的部分。
因此visibleMapRect
的来源只是当前显示在地图视图左上角的整个世界MKMapPoint
中的MKMapRect
。
假设您正在观看整个世界
visibleMapRect.origin
可能是x = 0,y = 0
放大时,正在查看的新左上角是前一个左上角的右侧。
当您向右移动时,x轴值会增加。
也许这个粗略的图表会有所帮助:
x-axis
0 ----------------------------- positive --->
________________________________________________
0 | |
: | |
: | +=============================+ |
y-axis : | |A | |
: | | +==========+ | |
: | | |B | | |
positive | | | | | |
: | | +==========+ | |
: | | | |
: | +=============================+ |
v | |
|________________________________________________|
MKMapRect
(MKMapRectWorld
)。visibleMapRect
。它的“A”可能是x = 5000,y = 2000。visibleMapRect
。它的“B”将具有更高的x和更高的y。
顺便说一句,您实际上并不需要关注特定 MKMapRect
或MKMapPoint
值本身。这个相关问题的答案也可能有所帮助:Difficulties understanding MapKit Coordinate System。