swift - 向 Google map 上的 KML 图层添加颜色

标签 swift google-maps kml

如何向 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/

相关文章:

css - 谷歌地图(街景)嵌入一个div,全屏坏了

javascript - 防止重叠的颜色在 Google map 中变暗

c# - 使用 C# 和 Linq 动态生成 kml 文件

ios - 自动调整按钮大小以匹配图形设计师在 Swift/Xcode 中的意图的好方法?

ios - 更新表格 View 中的条目(编辑后)并在表格 View 中显示时出现问题

java - MapActivity 上没有显示 map

vb.net - 用于 KML 的 Linq 到 XML?

kml - 使用KML在 map 上显示名称

ios - Web 请求确实无法正常工作

ios - 如何检测 iOS 版 SwiftUI 中的 TextField 何时失去焦点?