首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKMapCamera不会缩放以纠正高度

MKMapCamera不会缩放以纠正高度
EN

Stack Overflow用户
提问于 2018-09-27 10:29:52
回答 1查看 571关注 0票数 1

当我在地图视图(MapKit)上设置一个具有特定高度的MapKit时,它有时不会缩放到正确的高度。我想这跟地图没有满载有关,所以它停在更高的地方(950米左右),而不是我设定的高度(280米)。

最初,当我第一次加载地图时,我注意到了这个问题,但它似乎更多地与较低的海拔有关。更高的海拔似乎没问题。

这是一个演示问题的视频:https://streamable.com/644l1,在视频中,我设置了两次相同的摄像机。

设置摄像机的代码:

代码语言:javascript
复制
let distance = currentHole!.teeCoordinate.distance(to: currentHole!.greenCoordinate)
let altitude = Double(distance) * 2.5

let camera = MKMapCamera(
    lookingAtCenter: currentHole!.centerCoordinate(),
    fromDistance: altitude,
    pitch: 0.0,
    heading: currentHole!.teeCoordinate.bearing(to: currentHole!.greenCoordinate) - 20
)
mapView.setCamera(camera, animated: true)

我还试着用这样的方法:

代码语言:javascript
复制
UIView.animate(withDuration: 1.0, animations: { () -> Void in
    self.mapView.camera = camera
}, completion: { (done) -> Void in
    print("Animation complete")
})

用动画代替。如果将持续时间设置为非常高的东西,比如10秒左右,效果会更好(不完美)。

对这里的问题有什么想法吗?

更新:

它似乎只发生在“卫星天桥”地图。卫星没问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-10 15:23:41

我不知道为什么会这样,但我有一个理论。当你使用天桥地图类型时,相机的最低高度受到地图中心最高结构的限制。

如果你去地图应用程序,把它设置为3D卫星视图,直接到一座高楼(比如纽约帝国大厦)上方,你只能捏一下,放大到大楼的高度。如果你把相机从高耸的结构中移开,你可以捏一下以进一步放大。地图不会让你放大或放大结构。如果你放大到一座高楼的入口处,并试图平移朝向建筑物,地图将调整高度向上,而不需要你缩小,以防止你通过建筑物。

所以在地图满载之前,它不知道中心的最高结构是什么。为了防止你放大到一个高大的结构中,地图限制了最小高度。当地图完全加载,它知道没有高大的结构,它可以让你放大更近。

当你在动画上设定一个很长的持续时间时,它给了地图一个机会,在它到达较低的高度之前加载。该地图知道没有高大的结构,并允许进一步放大。我想说的是,如果您尝试了更长时间的动画,但是限制了网络带宽,它将再次停止工作。

请注意,卫星模式允许您通过高大的结构。

作为一种解决方法,尝试使用mapViewDidFinishLoadingMap:mapViewDidFinishRenderingMap:fullyRendered:来知道何时放大更多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52534939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档