Leaflet.Draw — преобразование geoJSON в Kml

Я сделал карту с помощью плагина Leaflet Draw, который позволяет пользователю загружать свои нарисованные элементы. Эти нарисованные элементы экспортируются в формате GeoJSON с использованием следующего кода из здесь:

document.getElementById('export').onclick = function(e) {
        // Extract GeoJson from featureGroup
        var data = featureGroup.toGeoJSON();

        // Stringify the GeoJson
        var convertedData = 'text/json;charset=utf-8,' + 
        encodeURIComponent(JSON.stringify(data));

        // Create export
        document.getElementById('export').setAttribute('href', 'data:' + 
        convertedData);      
       document.getElementById('export').setAttribute('download','data.geojson');
}

Это работает отлично, но было бы еще лучше, если бы GeoJSON был преобразован в .kml перед экспортом. Я знаю о плагине toKml, но я изо всех сил пытаюсь заставить его работать (я все еще новичок ко всему этому). Куда бы я добавил:

var kml = tokml(geojsonObject);

person JohnGIS    schedule 03.05.2018    source источник


Ответы (1)


Вы должны преобразовать свой объект data в KML с помощью tokml(data) и использовать полученную строку в URL-адресе данных с соответствующим типом MIME и именем файла:

var data = featureGroup.toGeoJSON();
var kml = tokml(data);

var convertedData = 'application/xml;charset=utf-8,' + encodeURIComponent(kml);

// if you want to use the official MIME type for KML
// var convertedData = 'application/vnd.google-earth.kml+xml;charset=utf-8,' + 
// encodeURIComponent(kml);

document.getElementById('export').setAttribute('href', 'data:' + convertedData); 
document.getElementById('export').setAttribute('download', 'data.kml');
person nikoshr    schedule 04.05.2018
comment
Спасибо @Никошр! Часть, с которой я ошибся, была определенно правильным типом MIME. Просто обратите внимание, что мне пришлось изменить (данные); к (кмл); в конце строки convertData и теперь все работает отлично. - person JohnGIS; 07.05.2018
comment
@JohnGIS Спасибо, что заметили это - person nikoshr; 07.05.2018