如何从KML文件中将图标快速添加到Mapkit

时间:2019-01-16 03:44:28

标签: swift mapkit kml

我有一个kml文件:

显示后,地图工具包中来自kml文件的所有数据都可以。但是在kml文件中我无法显示图标。

enter image description here

这是kml文件中的图标: enter image description here

这是一个注释代码:

open class KMLDocument: KMLElement {
     open var overlays: [MKOverlay] = []
     open var annotations: [KMLAnnotation] = []
     open var styles: [String: KMLStyle] = [:]
     open var placemarks: [KMLPlacemark] = []

     public convenience init(_ element: AEXMLElement, generateMapKitClasses: Bool) {
        self.init(element)
        if generateMapKitClasses {
            initOverlay()
            initAnnotation()
        }
    }

    fileprivate func initAnnotation() {
        for pointPlacemark: KMLPlacemark in placemarks {
            if let point: KMLPoint = pointPlacemark.point {
                let annotation = KMLAnnotation(point.coordinates)
                annotation.title = pointPlacemark.name
                annotation.subtitle = pointPlacemark.description
                annotation.style = pointPlacemark.style
                self.annotations.append(annotation)
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

为使KML文件中的图标图像正确显示在Google Earth或Google Maps中,该图标图像需要公开访问。当我将图标图像的URL放入浏览器(https://www.svgimages.com/svg-image/s5/send-file-256x256.png)时,只会出现黑屏,而没有图像。因此,无论出于何种原因,该URL都不会返回有效的,可公开访问的图像文件。在具有对该服务器的特殊访问权限并可以获取图像的KML查看器中,它可能可以正常工作,但在其他任何地方都无法正常工作。您可能还需要检查它是否实际上返回的是PNG文件,而不是SVG文件(因为URL在两个地方都包含“ svg”),因为KML仅支持JPG,PNG和GIF图像(加上TIFF和GeoTiff用于叠加层) )。