Интеграция KML в автономную версию Google Map iOS - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу создать файл kml программно в iOS Swift4.Я много занимался серфингом по поводу офлайн GoogleMaps и сохранения данных в файле kml, но я не нашел соответствующих материалов по этому поводу.Короче говоря, я просто хочу сохранить POI в kml и отобразить его в offline Googlemap !!

1 Ответ

0 голосов
/ 28 сентября 2018

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"

    }

}
...