MKTileOverlay,未一致绘制180.0 / -180.0处的图块

时间:2019-03-09 09:35:32

标签: swift mapkit mktileoverlay

我使用MKTileOverlay类通过自行生成的图块图像覆盖地图。

一切正常,除了经度180或-180度的边框上的图块。在此行上,有时仅绘制图块...有人可以给我提示解决该问题吗?

您可以在此屏幕截图上看到效果

enter image description here

此“默认”图块应完全覆盖地图的此特定区域。磁贴图像本身应该可以,因为它们显示在其他磁贴上。

我使用此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 )
    }
}

..任何提示都欢迎;-)

1 个答案:

答案 0 :(得分:0)

简而言之:Apple确认这是IOS MapKit中的错误。至少IOS版本11和12会受到影响。到目前为止,尚无已知的工作。

长版:我为此花了一张DTS票,并与一位非常优秀的Apple工程师联系。共同努力后,他可以轻松地重现该问题。他要求我提交错误报告(49270907)。这样他就可以与MapKit团队进行交谈,他们确认了该错误。