Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MKMapCamera不';t变焦到正确的高度_Ios_Mapkit - Fatal编程技术网

Ios MKMapCamera不';t变焦到正确的高度

Ios MKMapCamera不';t变焦到正确的高度,ios,mapkit,Ios,Mapkit,当我在地图视图(MapKit)上设置具有特定高度的MKMapCamera时,它有时不会缩放到正确的高度。我认为这与地图没有满载有关,所以它停得更高(950米左右),而不是我设定的高度(约280米) 最初,我在第一次加载地图时注意到了这个问题,但它似乎与较低的海拔高度有关。高海拔似乎可以 下面是一段视频,演示了这个问题: 在视频中,我将同一个摄像头设置了两次 设置相机的代码: let distance = currentHole!.teeCoordinate.distance(to: curren

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

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

下面是一段视频,演示了这个问题: 在视频中,我将同一个摄像头设置了两次

设置相机的代码:

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提交给苹果。