如何向 kml 图层添加颜色。
图层在 map 上显示,但所有颜色均为紫色,但在 KMl 文件中提到了每个 KMl 图层的颜色。 有什么方法可以使用 swift 以编程方式向 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 map 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 阅读器中
关于swift - 向 Google map 上的 KML 图层添加颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53894216/