通过测试,我已经意识到,当您向右(东)方向滚动 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)。
  • 第一个带有左上角“A”的内部矩形是一些初始visibleMapRect。其“A”可能类似于x = 5000,y = 2000。
  • 带有左上角“B”的第二个内部矩形是一些visibleMapRect放大的。其“B”将具有更高的x和更高的y。

  • 顺便说一句,您实际上不需要真正关心特定的MKMapRectMKMapPoint值。这个相关问题的答案也可能会有所帮助:Difficulties understanding MapKit Coordinate System

    关于ios - 缩放会增加self.map.visibleMapRect.origin.x和y,但是为什么呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23051328/

    10-10 19:08