1

我正在使用 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 双打跨度传递给它。所以视觉效果是视图注释的居中而不缩放。

有什么建议么?

4

2 回答 2

1

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

正如 FKDev 回答所说, regionThatFits 会根据 mapView 实际帧(导致崩溃的原因)重新计算跨度。希望可以帮助某人。

于 2015-04-28T07:48:07.567 回答
0

您不应该使用regionThatFits:它,因为它用于更改跨度值以匹配视图框架。来自 Apple 的文档:

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

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

[mapView setRegion:MKCoordinateRegionMake(centerCoordinate, newSpan)];
于 2012-07-12T09:12:48.317 回答