在Google地图上为KML图层添加颜色

时间:2018-12-22 08:42:32

标签: swift google-maps kml

如何为kml图层添加颜色。

图层在地图上显示,但所有颜色均为紫色,但在KM1文件中,每个KM1图层均提到了颜色。 有什么办法可以使用swift以编程方式向KML图层添加颜色

对此的任何帮助将不胜感激。

预先感谢。

1 个答案:

答案 0 :(得分:0)

在处理KML时,它基本上是一个XML文件,并且颜色已编码到该文件中。如果要更改颜色,则需要先使用AEXML之类的KML将其解析为XML。

     let filePath = Bundle.main.path(forResource: "(your file name)", ofType: "kml")

     guard let data = try? Data(contentsOf: url) else {
     print("error loading kml from URL")
     return}


     var options = AEXMLOptions()
     options.parserSettings.shouldProcessNamespaces = true
     options.parserSettings.shouldReportNamespacePrefixes = true
     var kml = try AEXMLDocument(xml: data, options: options)

现在您有了一个XML文件,您可以使用它简单地进行编辑

     kml.replacingOccurrences(of: "ff000000", with: "ff8f8f8f")

在其中用您要查找并要替换的颜色替换“ of”和“ with”。

奖金提示: 您也可以使用相同的.replacingOccurrences方法来更改kml中的线宽。

编辑: 完成修改后,将xml转换为数据并将其传递到Google Maps kml渲染器。

     guard let kmlData = kml.data(using: .utf8) else {return}
     kmlParser = GMUKMLParser(data: kmlData)
     kmlParser.parse()



     renderer = GMUGeometryRenderer(map: mapView,
                                    geometries: kmlParser.placemarks,
                                    styles: kmlParser.styles)

     renderer.render()

如果您需要帮助以更好地了解kml的结构,只需将扩展名更改为xml,然后将其加载到浏览器或其他xml阅读器中即可