Ios MKMapCamera不';t变焦到正确的高度
当我在地图视图(MapKit)上设置具有特定高度的MKMapCamera时,它有时不会缩放到正确的高度。我认为这与地图没有满载有关,所以它停得更高(950米左右),而不是我设定的高度(约280米) 最初,我在第一次加载地图时注意到了这个问题,但它似乎与较低的海拔高度有关。高海拔似乎可以 下面是一段视频,演示了这个问题: 在视频中,我将同一个摄像头设置了两次 设置相机的代码:Ios MKMapCamera不';t变焦到正确的高度,ios,mapkit,Ios,Mapkit,当我在地图视图(MapKit)上设置具有特定高度的MKMapCamera时,它有时不会缩放到正确的高度。我认为这与地图没有满载有关,所以它停得更高(950米左右),而不是我设定的高度(约280米) 最初,我在第一次加载地图时注意到了这个问题,但它似乎与较低的海拔高度有关。高海拔似乎可以 下面是一段视频,演示了这个问题: 在视频中,我将同一个摄像头设置了两次 设置相机的代码: let distance = currentHole!.teeCoordinate.distance(to: curren
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秒左右,则效果更好(并非完美)
你对这里的问题有什么想法吗
更新:
这似乎只发生在“卫星天桥”地图上。卫星很好。我不知道为什么会发生这种情况,但我有一个理论。使用立交桥地图类型时,相机的最低高度受地图中心最高结构的限制 如果你进入“地图”应用程序,将其设置为“3D卫星视图”,然后直接进入高层建筑(比如纽约的帝国大厦)上方,你只能通过捏一下放大到略高于建筑高度的位置。如果将相机平移到远离高耸结构的位置,则可以通过挤压进一步放大。地图不允许您在结构中或结构内部进行缩放。如果你放大到一座高楼的入口,并尝试向该楼平移,地图将向上调整高度,而不必收缩缩小,以防止你通过该楼 因此,在地图满载之前,它不知道中心最高的建筑是什么。为防止在高大结构内缩放,贴图将限制最小高度。在地图完全加载并且它知道没有高耸的结构之后,它允许您放大 当您在动画上设置较长的持续时间时,这将使贴图有机会在到达较低高度之前加载。地图知道没有高大的建筑物,并允许进一步放大。我想说的是,如果你尝试更长时间的动画,但限制了网络带宽,它会再次停止工作 请注意,卫星模式允许您通过高层结构
作为一种解决方法,试着使用
mapViewDidFinishLoadingMap:
或MapViewDidFinishRendered:
来知道何时放大更多。所以,第一次,地图放大不正确,而第二次则正确,对吗?如果我从高空开始,它放大不正确。如果我从低海拔开始,它会正确地缩放。是的,你可能是对的。我将把它作为一个bug提交给苹果。