regionThatFits加倍跨度区域

时间:2012-07-12 08:53:37

标签: iphone mkmapview region

我正在使用MKMapView处理组件。地图应该双重缩放注释点击。为此,我尝试减少两次地图区域范围,但有时它工作不正确: 在这里代码和平:

    MKCoordinateSpan newSpan = mapView.region.span;
NSLog(@"old: %f, %f", newSpan.latitudeDelta, newSpan.longitudeDelta);
newSpan = MKCoordinateSpanMake(newSpan.latitudeDelta / 2.0, newSpan.longitudeDelta / 2.0);
NSLog(@"new: %f, %f", newSpan.latitudeDelta, newSpan.longitudeDelta);
MKCoordinateRegion region = [mapView regionThatFits:MKCoordinateRegionMake(centerCoordinate, newSpan)];

NSLog(@"!!!! (%f, %f) (%f, %f)", region.center.latitude, region.center.longitude, region.span.latitudeDelta, region.span.longitudeDelta);

我采用当前跨度,减少它并传递给regionThatFits。有时结果是:

old: 0.609257, 0.914612
new: 0.304629, 0.457306
!!!! (55.805472, 37.579371) (0.608178, 0.914612)

regionThatFits传递给它的双倍跨度。因此视觉效果是视图注释的中心而不是缩放。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,碰巧是我有时会改变mapView的大小(为了应用程序的需要)。然后我在mapView的高度为0时使用了regionThatFits。

正如FKDev的回答所说,regionThatFits根据mapView实际帧(导致崩溃的原因)重新计算范围。希望能帮助别人。

答案 1 :(得分:0)

您不应使用regionThatFits:,因为它用于更改范围值以匹配视图框。 来自Apple的Doc:

  

仍然以地图的同一点为中心但其跨度值已调整为适合地图视图框架的区域。

在您的情况下,您可以直接更改地图区域的范围值。

[mapView setRegion:MKCoordinateRegionMake(centerCoordinate, newSpan)];