2012-08-10 118 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总是会设定自己的想法是什么是最好的。它的想法是什么是最好的,它允许它显示瓷砖而不放大或缩小。

相关问题