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

时间:2014-06-16 12:00:36

标签: javascript kml kmz

我正在编写JavaScript代码,用于从本地文件夹添加kmz,kml和csv文件。所有文件将在esri Map上显示/添加。我能够添加kml和csv,但不能添加kmz.I不想在我的代码中包含完整的zip / unzip代码或库。我不需要全部。只需要一个小代码将kmz转换为kml。

此外,我不想在任何本地文件夹中存储任何解压缩或转换的文件(将是kml)。

只想阅读内容并动态传递给我的add_kml()函数。 只想从kmz文件中提取内容,这将是kml。 可用的代码是将提取的文件存储在某个文件夹中。我不希望这样。

function unZipAndProcessKMZ(blob)         {
             zip.createReader(new zip.BlobReader(blob),
            功能(阅读器)             {//从zip获取所有条目              reader.getEntries(function(entries)                                                         {parseTransformKMZ(entries);}                                                           );           },              function(error){/ * onerror callback * /}           );         }

    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();                                     

});

1 个答案:

答案 0 :(得分:1)

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