Когда вы имеете дело с KML, это в основном файл XML, и цвета закодированы в файле. Если вы хотите изменить цвета, вам нужно сначала преобразовать KML в XML, используя что-то вроде AEXML.
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")
где вы заменяете «из» и «с» цветами, которые вы ищете и хотите заменить.
Дополнительный совет: вы можете использовать тот же метод .replacingOccurrences, чтобы изменить ширину линии и в kml.
РЕДАКТИРОВАТЬ: После того, как вы внесете свои изменения, преобразуйте xml в данные и передайте их средству визуализации kml Google Maps.
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.
person
Rob.R
schedule
22.12.2018