2012-08-10 51 views
0

我絲毫不理解mapRectThatFits。這裏是一行簡單的代碼:mapRectThatFits:它有什麼作用?

MKMapRect zoomRectNorm = [mapView mapRectThatFits:zoomRect]; 
// BREAKPOINT HERE 

現在讓我們來看看調試器。

打印zoomRect:

(lldb) p zoomRect 
(MKMapRect) $1 = { 
    (MKMapPoint) origin = { 
    (double) x = 4.2997e+07 
    (double) y = 9.36865e+07 
    } 
    (MKMapSize) size = { 
    (double) width = 26493.1 
    (double) height = 148685 
    } 
} 

打印zoomRectNorm:

(lldb) p zoomRectNorm 
(MKMapRect) $2 = { 
    (MKMapPoint) origin = { 
    (double) x = 4.29283e+07 
    (double) y = 9.36379e+07 
    } 
    (MKMapSize) size = { 
    (double) width = 163840 
    (double) height = 245760 
    } 
} 

所以調整縱橫比爲2:3,但它沒有保持寬度,高度,或起源!?

根據文檔它應該返回:

的地圖矩形仍集中在相同的點上的地圖 的,但其寬度和高度被調整,以適應在地圖視圖中的 幀。

什麼是交易?我希望它能夠保持原點(如文檔中所述)和至少一個寬度/高度?

回答

0

適合的MapRect將縮小,直到它達到可以包含您的區域的縮放級別,然後按照原始分辨率顯示切片。

+0

原點呢?爲什麼它會改變這一點? – mark 2012-08-10 17:10:23

+0

您的地區位於何處,它是否可以非常靠近日期線(mkmapview無法跨越),因爲中心會放大,因此中心會被推到一邊 – Craig 2012-08-10 20:31:51

0

如果您在地圖視圖上使用了setVisibleMapRect,它會返回您將得到的地圖矩形。中心應該是一樣的。起源可能不會。你必須考慮起源和中心之間的差異來理解原因。另一件需要了解的事情是,儘管你要求設置一個特定的地圖矩形,但mapview總是會設定自己的想法是什麼是最好的。它的想法是什麼是最好的,它允許它顯示瓷磚而不放大或縮小。

相關問題