缩放增加了self.map.visibleMapRect.origin.x和y,但为什么呢?

时间:2014-04-14 03:06:36

标签: ios mkmapview zooming

通过测试我已经意识到,当您向右(向东)方向滚动地图时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会增加?它应该不是!!

1 个答案:

答案 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    |                                                |  
               |________________________________________________|  
  • 外部矩形是整个世界的固定MKMapRectMKMapRectWorld)。
  • 左上角“A”的第一个内部矩形是一些初始visibleMapRect。它的“A”可能是x = 5000,y = 2000。
  • 左上角“B”的第二个内部矩形是一些放大的visibleMapRect。它的“B”将具有更高的x和更高的y。


顺便说一句,您实际上并不需要关注特定 MKMapRectMKMapPoint 本身。这个相关问题的答案也可能有所帮助:Difficulties understanding MapKit Coordinate System