KML - это схема документа XML.Вы можете написать это так, как считаете нужным.Используйте специальный XML-кодировщик или перебор, используя строки.
Полная спецификация задокументирована в https://developers.google.com/kml/documentation/kmlreference
. Вы можете найти изучение существующих файлов KML полезным для демонстрации примеров структур.
Вот пример кодера грубой силы для кодированиянабор помеченных меток…
Перед записью в файл необработанные строки должны быть экранированы в XML.
Вы можете найти Google Toolbox для Mac полезной здесь.
class KMLWriter {
func createKMLFormat(_ logs:[DDBLogEntry])->String {
var kml = preamble()
for log in logs {
kml += placemarkForLog(log)
}
terminate(&kml)
return kml
}
func placemarkForLog(_ log:DDBLogEntry)->String {
let name = log.userContent ?? "empty"
let time = log.dateCreated ?? Date()
let timeStamp = Date.UTCDateFormatter.string(from: time)
return "<Placemark>\n<name>\(name)</name>\n<Point><coordinates>\(log.longitude ?? 0),\(log.latitude ?? 0),\(log.elevation ?? 0)</coordinates></Point>\n<TimeStamp><when>\(timeStamp)</when></TimeStamp>\n</Placemark>\n"
}
func preamble()->String {
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n<Document>\n"
}
func terminate(_ kml:inout String) {
kml += "</Document>\n</kml>\n"
}
}