2014-04-14 23 views
1

我已經通過測試認識到MKMapView.visibleMapRect.origin.x隨着您向右(東)方向滾動地圖而增加,並且隨着您向下滾動(南)方向(假設北向UP)而增加。縮放會增加self.map.visibleMapRect.origin.x和y,但是爲什麼?

我的問題是:爲什麼MKMapView.visibleMapRect.origin.x放大時會增加?

是不是MKMapView來自可見區域的最左上角的點?那麼,放大時不會減少MKMapView.visibleMapRect.origin.x,因爲地圖上的左上角位置現在較低?

它是有道理的,MKMapView.visibleMapRect.origin.y會增加,因爲可見區域現在實際上比以前低。

那麼爲什麼當你放大時MKMapView.visibleMapRect.origin.x會增加?它不應該是!

回答

2

地圖視圖的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

+0

非常感謝。我把地圖顛倒了XD,那就是問題所在! XDXD。非常感謝〜 – coolcool1994