【发布时间】:2019-12-30 03:31:06
【问题描述】:
我遇到了一个问题,在 iOS 13.2(可能也来自 iOS 13)中,使用 MKTileOverlay 加载离线地图图块偶尔无法渲染,使图块留空,似乎没有问题MKTileOverlay 的子类,因为它在 iOS 12 及更低版本中运行良好。我有 2 个MKTileOverlay 类(1 个添加网格和 1 个加载地图瓦片文件,默认为 MKTileOverlay),两者都无法在默认为 MKTileOverlayRenderer 的空白瓦片上加载,其他覆盖似乎很好。
如果我转到主屏幕并返回应用程序,问题似乎会自行解决,从而导致图块重新加载。这是 iOS MapKit 本身的错误吗?有人对此有临时解决方案吗?谢谢。
添加叠加层代码:
let overlay = MKTileOverlay(urlTemplate: urlTemplate)
overlay.canReplaceMapContent = true
overlay.maximumZ = 19
mapView.insertOverlay(overlay, at: 0, level: .aboveLabels)
渲染器:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKTileOverlay {
let renderer = MKTileOverlayRenderer(tileOverlay: overlay as! MKTileOverlay)
return renderer
}
return MKOverlayRenderer()
}
【问题讨论】:
-
您找到解决方案了吗?我在 Xamarin.iOS 中使用 MapKit 的长期应用程序中遇到了完全相同的问题。它到了我把它从商店里撤下来的阶段,因为苹果似乎在 13.2 前后引入了很多问题。在空白图块的情况下,我将其跟踪到 MKOverlayTileRenderer,即使提供了有效数据,它也无法加载图像。
-
@PhilJohn 很遗憾,不,我必须在
mapViewDidFinishRenderingMap(mapView:fullyRendered:)上实施一个不太好的解决方法,手动调用renderer.reloadData(),它会一直闪烁,但它应该在重新加载后消除空白图块