当我在地图视图(MapKit)上设置一个具有特定高度的MapKit时,它有时不会缩放到正确的高度。我想这跟地图没有满载有关,所以它停在更高的地方(950米左右),而不是我设定的高度(280米)。
最初,当我第一次加载地图时,我注意到了这个问题,但它似乎更多地与较低的海拔有关。更高的海拔似乎没问题。
这是一个演示问题的视频:https://streamable.com/644l1,在视频中,我设置了两次相同的摄像机。
设置摄像机的代码:
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)我还试着用这样的方法:
UIView.animate(withDuration: 1.0, animations: { () -> Void in
self.mapView.camera = camera
}, completion: { (done) -> Void in
print("Animation complete")
})用动画代替。如果将持续时间设置为非常高的东西,比如10秒左右,效果会更好(不完美)。
对这里的问题有什么想法吗?
更新:
它似乎只发生在“卫星天桥”地图。卫星没问题。
发布于 2018-10-10 15:23:41
我不知道为什么会这样,但我有一个理论。当你使用天桥地图类型时,相机的最低高度受到地图中心最高结构的限制。
如果你去地图应用程序,把它设置为3D卫星视图,直接到一座高楼(比如纽约帝国大厦)上方,你只能捏一下,放大到大楼的高度。如果你把相机从高耸的结构中移开,你可以捏一下以进一步放大。地图不会让你放大或放大结构。如果你放大到一座高楼的入口处,并试图平移朝向建筑物,地图将调整高度向上,而不需要你缩小,以防止你通过建筑物。
所以在地图满载之前,它不知道中心的最高结构是什么。为了防止你放大到一个高大的结构中,地图限制了最小高度。当地图完全加载,它知道没有高大的结构,它可以让你放大更近。
当你在动画上设定一个很长的持续时间时,它给了地图一个机会,在它到达较低的高度之前加载。该地图知道没有高大的结构,并允许进一步放大。我想说的是,如果您尝试了更长时间的动画,但是限制了网络带宽,它将再次停止工作。
请注意,卫星模式允许您通过高大的结构。
作为一种解决方法,尝试使用mapViewDidFinishLoadingMap:或mapViewDidFinishRenderingMap:fullyRendered:来知道何时放大更多。
https://stackoverflow.com/questions/52534939
复制相似问题