通过测试,我已经意识到,当您向右(东)方向滚动 map 时MKMapView.visibleMapRect.origin.x
会增加,而当您向下(南)方向滚动 map 时MKMapView.visibleMapRect.origin.y
会增加(假设北方朝上)。
我的问题是:放大时为什么MKMapView.visibleMapRect.origin.x
会增加?MKMapView
起点不是可见区域的最左上角吗?然后,由于现在 map 的左上方位置较低,因此放大时MKMapView.visibleMapRect.origin.x
不会减少吗?MKMapView.visibleMapRect.origin.y
会增加是有道理的,因为现在可见区域实际上比以前要小。
那么,为什么放大时MKMapView.visibleMapRect.origin.x
会增加?不应该!
最佳答案
map 视图的visibleMapRect
属性是MKMapRect
。MKMapRect
使用MKMapPoint
单位定义一个矩形。
map 的MKMapPoint
网格系统是固定点集,几乎覆盖了整个世界。
原点位于左上角,大约对应于85°N,180°W的实词坐标。
x轴从0(最左/最西)开始,并向右/东正向增加一些。
y轴从0(最高/最北)开始,并朝着最低/南部正向增加到一个非常大的数字。visibleMapRect
指示 map 当前显示的是全球MKMapRect
中的部分。
因此,visibleMapRect
的起源只是整个世界MKMapPoint
中的MKMapRect
,当前它显示在 map 视图的左上角。
假设您正在浏览整个世界。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。关于ios - 缩放会增加self.map.visibleMapRect.origin.x和y,但是为什么呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23051328/