【问题标题】:Zooming increases self.map.visibleMapRect.origin.x and y, but why?缩放会增加 self.map.visibleMapRect.origin.x 和 y,但是为什么呢?
【发布时间】:2014-04-14 20:33:51
【问题描述】:

我通过测试发现MKMapView.visibleMapRect.origin.x 会随着您向右(东)方向滚动地图而增加,而MKMapView.visibleMapRect.origin.y 会随着您向下(南)方向滚动而增加(假设北向上)。

我的问题是:为什么放大时MKMapView.visibleMapRect.origin.x 会增加?

MKMapView 原点不是可见区域的最左上角吗?那么,当您放大时,MKMapView.visibleMapRect.origin.x 不会减少吗,因为左上角的位置现在在地图上较低?

MKMapView.visibleMapRect.origin.y 会增加是有道理的,因为现在可见区域实际上比以前低了。

那么为什么放大时MKMapView.visibleMapRect.origin.x 会增加?不应该!!

【问题讨论】:

    标签: ios mkmapview zooming


    【解决方案1】:

    地图视图的visibleMapRect 属性是MKMapRect

    MKMapRect 使用MKMapPoint 单位定义一个矩形。

    地图的MKMapPoint 网格系统是一组固定的点,几乎覆盖了整个世界。

    原点位于左上角,大约对应于 85° N,180° W 的真实坐标。

    x 轴从 0(最左/最西)开始,向右/向东正向增加到某个非常大的数字。

    y 轴从 0(顶部/最北端)开始,向底部/南端正向增加到某个非常大的数字。

    visibleMapRect 表示地图当前显示的是整个世界MKMapRect部分

    所以visibleMapRect 的起源只是整个世界的MKMapRect 中的MKMapPoint,目前显示在地图视图的左上角。

    假设您正在查看整个世界。
    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

    【讨论】:

    • 非常感谢。我把地图颠倒了 XD,这就是问题所在! XDXD。非常感谢~
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多