MKTileOverlay,180.0 / -180.0 处的瓷砖未一致绘制
MKTileOverlay, tiles at 180.0 / -180.0 not drawn consistenly
我使用 MKTileOverlay class 通过自己生成的图块图像覆盖地图。
除经度 180 度或 -180 度边框上的图块外,一切正常。在这条线上,有时只会绘制瓷砖......有人可以给我提示来解决这个问题吗?
这个截图可以看到效果
地图的这个特定区域应该被 "default" 个图块完全覆盖。瓷砖图像本身应该没问题,因为它们显示在其他瓷砖上。
我使用此 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 )
}
}
.. 欢迎任何提示 ;-)
简而言之:Apple 确认这是 IOS MapKit 中的错误。至少 IOS 版本 11 和 12 受到影响。目前还没有已知的解决方法。
长版:我为此花了一张DTS票,并接触到了一位非常优秀的苹果工程师。经过一些合作,他可以轻松地重现该问题。他让我提交错误报告 (49270907)。通过这个,他能够与 MapKit 团队交谈,他们确认了这个错误。
我使用 MKTileOverlay class 通过自己生成的图块图像覆盖地图。
除经度 180 度或 -180 度边框上的图块外,一切正常。在这条线上,有时只会绘制瓷砖......有人可以给我提示来解决这个问题吗?
这个截图可以看到效果
地图的这个特定区域应该被 "default" 个图块完全覆盖。瓷砖图像本身应该没问题,因为它们显示在其他瓷砖上。
我使用此 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 )
}
}
.. 欢迎任何提示 ;-)
简而言之:Apple 确认这是 IOS MapKit 中的错误。至少 IOS 版本 11 和 12 受到影响。目前还没有已知的解决方法。
长版:我为此花了一张DTS票,并接触到了一位非常优秀的苹果工程师。经过一些合作,他可以轻松地重现该问题。他让我提交错误报告 (49270907)。通过这个,他能够与 MapKit 团队交谈,他们确认了这个错误。