regionThatFits 使跨度区域翻倍

Posted

技术标签:

【中文标题】regionThatFits 使跨度区域翻倍【英文标题】:regionThatFits doubles span area 【发布时间】:2012-07-12 08:53:36 【问题描述】:

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

有什么建议吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

不幸的是,这没有帮助。问题是代码几乎一直运行良好(跨度没有减少),但有时会发生这种行为。 嗯,在 ios 5.x 及之前的版本中,setRegion 捕捉到一个网格:***.com/questions/3612007/…。观看 WWDC 2012 的第 300 场会议,大约 5:00,您会看到 setRegion 的未来充满希望。

以上是关于regionThatFits 使跨度区域翻倍的主要内容,如果未能解决你的问题,请参考以下文章

xcode:打印 MKMapView 区域、跨度、latitudeDelta、longitudeDelta

Apple Watch SwiftUI 地图事件?如何读取数字表冠旋转的当前区域跨度?

MKMapView 区域在 iOS7 中方向更改后损坏

MKMapView 与其区域属性未对齐

Android--Webview,输入框翻倍?

UIButton:使点击区域大于默认点击区域