gpt4 book ai didi

swift - 如何从子类调用 MKTileOverlay "url"函数?获得 EXC_BAD_INSTRUCTION

转载 作者:搜寻专家 更新时间:2023-11-01 06:11:29 25 4
gpt4 key购买 nike

我在下面标记的位置遇到运行时错误?如何从子类调用 MKTileOverlay“url”函数?收到 EXC_BAD_INSTRUCTION?

基本上想在某些地方显示自定义图 block ,但在不可用时返回到标准 Apple map 图 block 。

class GCMapOverlay : MKTileOverlay {
override func url(forTilePath path: MKTileOverlayPath) -> URL {
// Get local custom map tile if available
let optionalUrl = Bundle.main.url(
forResource: "\(path.y)",
withExtension: "png",
subdirectory: "tiles/\(path.z)/\(path.x)",
localization: nil)
NSLog("tiles/\(path.z)/\(path.x)/\(path.y)")

guard let url = optionalUrl else {
// Local tile not available - want to drop back to an apple maps tile (as if MKTileOverlay wasn't subclassed)
return super.url(forTilePath: path) // <== RUNTIME ERROR: NetworkLoad (10): EXC_BAD_INSTRUCTION
}

// Local tile available so return
return url
}
}

在我的 Controller 中

func setupTileRenderer() {
let overlay = GCMapOverlay()
overlay.canReplaceMapContent = true
mapView.addOverlay(overlay, level: .aboveLabels)
tileRenderer = MKTileOverlayRenderer(tileOverlay: overlay)
}

最佳答案

我从未使用过 MKTileOverlayurl(forTilePath:) 的文档指出:

The default implementation of this method uses the template string you provided at initialization time to build a URL to the specified tile image.

MKTileOverlay 类提供初始化器:

init(urlTemplate:)

但是当您创建 GCMapOverlay 的实例时,您不会使用该初始化程序。

替换:

let overlay = GCMapOverlay()

与:

let overlay = GCMapOverlay(urlTemplate: someAppropriateTemplate)

或覆盖子类中的 urlTemplate 属性应该可以解决调用 super.url(forTilePath:) 时的问题。

关于swift - 如何从子类调用 MKTileOverlay "url"函数?获得 EXC_BAD_INSTRUCTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com