我使用MKTileOverlay类通过自行生成的图块图像覆盖地图。
一切正常,除了经度180或-180度的边框上的图块。在此行上,有时仅绘制图块...有人可以给我提示解决该问题吗?
您可以在此屏幕截图上看到效果
此“默认”图块应完全覆盖地图的此特定区域。磁贴图像本身应该可以,因为它们显示在其他磁贴上。
我使用此loadTile(at:...)函数提供生成的切片图像。打印语句表明,所有图块均调用了此函数,并且结果函数获得了有效的图像。只是瓷砖没有绘制..而我使用标准的MKTileOverlayRenderer ..
override func loadTile(at path: MKTileOverlayPath, result: @escaping (_ data: Data?, _ error: Error?) -> Void) {
let x: Int = path.x
let y: Int = path.y
let zoomLevel : Int = path.z
// calculate the x for the tile at longitude 180 degree
let xMax = (1 << zoomLevel) - 1
if (x == 0) || (x == xMax) {
print("\(zoomLevel)/\(x)/\(y) requested")
}
// local variable to hold the image of the tile
var localUIImage: UIImage = tileImageForDefaultImage
// lots of stuff to generate the tile image
// check if we have a valid image
if let resultImage = localUIImage.pngData() {
if (x == 0) || (x == xMax) {
print("resultImage: \(resultImage.debugDescription)")
}
result(resultImage, nil )
} else {
let noResultImage = tileImageForDefaultImage.pngData()
if (x == 0) || (x == xMax) {
print("noResultImage: \(noResultImage.debugDescription)")
}
result(noResultImage, nil )
}
}
..任何提示都欢迎;-)
答案 0 :(得分:0)
简而言之:Apple确认这是IOS MapKit中的错误。至少IOS版本11和12会受到影响。到目前为止,尚无已知的工作。
长版:我为此花了一张DTS票,并与一位非常优秀的Apple工程师联系。共同努力后,他可以轻松地重现该问题。他要求我提交错误报告(49270907)。这样他就可以与MapKit团队进行交谈,他们确认了该错误。