我正在编写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();
});
答案 0 :(得分:1)
得到解决方案 - 简单地将blob对象作为输入文件传递给zip.js中的zip.blobReader函数