【发布时间】:2018-12-22 08:42:31
【问题描述】:
如何为 kml 图层添加颜色。
图层在地图上显示,但所有颜色均为紫色,但在 KMl 文件中,每个 KMl 图层的颜色都被提及。 有什么方法可以使用 swift 以编程方式向 KML 图层添加颜色
对此的任何帮助将不胜感激。
提前致谢。
【问题讨论】:
标签: swift google-maps kml
如何为 kml 图层添加颜色。
图层在地图上显示,但所有颜色均为紫色,但在 KMl 文件中,每个 KMl 图层的颜色都被提及。 有什么方法可以使用 swift 以编程方式向 KML 图层添加颜色
对此的任何帮助将不胜感激。
提前致谢。
【问题讨论】:
标签: swift google-maps kml
当您处理 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 阅读器中
【讨论】: