Когда вы имеете дело с 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")
где вы заменяете "of" и "with" на цвета, которые вы ищете и хотите заменить на.
Бонусный совет: вы можете использовать тот же метод .replacingOccurferences, чтобы изменить ширину линиив kml тоже.
РЕДАКТИРОВАТЬ: После того, как вы внесете свои изменения, преобразуйте xml в данные и передайте его в средство визуализации kml для карт Google.
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 ридере