简体   繁体   English

如何使用javascript将KMZ文件转换为KML?

[英]How to convert KMZ file to KML using javascript?

In am writing JavaScript code for adding kmz,kml and csv file from local folder.All the files will be displayed/added on esri Maps.I am able to add kml and csv, but not kmz.I dont want to include full zip/unzip code or library into my code.I dont need that all.Only need a small code for converting kmz to kml.我正在编写用于从本地文件夹添加 kmz、kml 和 csv 文件的JavaScript代码。所有文件都将在 esri 地图上显示/添加。我可以添加 kml 和 csv,但不能添加 kmz。我不想包含完整的 zip/将代码或库解压缩到我的代码中。我不需要全部。只需要一个小代码即可将 kmz 转换为 kml。

Also I don't want to store any unzipped or converted file(which will be kml) in any local folder.此外,我不想在任何本地文件夹中存储任何解压缩或转换后的文件(将是 kml)。

Just want to read the contents and pass it to my add_kml() function on the fly.只想读取内容并将其即时传递给我的 add_kml() 函数。 Only want to extract the contents from kmz file which will be kml.只想从将是 kml 的 kmz 文件中提取内容。 The code available everywhere is to store the extracted file in some folder.I dont want that.随处可用的代码是将提取的文件存储在某个文件夹中。我不想要那样。

function unZipAndProcessKMZ(blob) {函数 unZipAndProcessKMZ(blob) {
zip.createReader(new zip.BlobReader(blob), zip.createReader(new zip.BlobReader(blob),
function(reader) {// get all entries from the zip reader.getEntries( function(entries) { parseTransformKMZ(entries);} ); function(reader) {// 从 zip reader.getEntries( function(entries) { parseTransformKMZ(entries);} ); 获取所有条目}, function(error) {/* onerror callback */ } ); }, function(error) {/* onerror 回调 */ } ); } }

    function parseTransformKMZ(entries) 
    {
        //Step 1: find doc.kml
        var docKMLentry = findFileByName(entries, '.kml', false);
        console.log('in Parse file: ', docKMLentry.filename);       
        docKMLentry.getData(    new zip.BlobWriter('text/xml'),
        function(kmlText) 
        {

    var fileReader = new FileReader();

                                       fileReader.addEventListener("loadend",  function() 
{                                                docKML = fileReader.result;

if (typeof docKML == 'string') {
docKML = ( new window.DOMParser() ).parseFromString(docKML, "text/xml");
                       }   
    var geojson = toGeoJSON[extension](docKML);                    
            //send data to esri converter
                  feats = geojson.features;
                 if (!feats || (feats.length === 0)) {
                 alert("No features found");
                 return;
        }     convertTo_esri();                                     

}); });

得到了解决方案 - 简单地将 blob 对象作为输入文件传递给 zip.js 中的 zip.blobReader 函数

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM