我有一个Leaflet地图,该地图使用Leaflet.Draw库,并允许用户绘制geoJSON多边形并下载文件(将其转换为.KML格式后)。我遇到一个问题,如果未绘制任何多边形,下载功能仍将运行,因此我尝试使用IF / ELSE语句来解决该问题,该语句查看geoJSON文件的长度。
document.getElementById('export').onclick = function(e) {
//extract GeoJson from featureGroup
var data = featureGroup.toGeoJSON();
console.log(data.features.length);
if (data.features.length === 0) {
alert('Your drawn feature is not valid!');
} else {
//convert to KML
var kml = tokml(data);
//convert to dataURL format
var convertedData = 'application/vnd.google-earth.kml+xml;charset=utf-8,' +
encodeURIComponent(kml);
//create export
document.getElementById('export').setattribute('href','data:' + convertedData);
document.getElementById('export').setattribute('download','3DroneMapping_AOI.kml');
}
}
起初,以上代码似乎运行良好。单击下载按钮而不绘制多边形特征将使控制台登录0,并出现警报。在绘制多边形要素并单击“下载”按钮时,会将1记录到控制台,然后下载文件。
绘制多边形要素,下载并使用删除按钮将其删除后,就会发生此问题:
document.getElementById('delete').onclick = function(e) {
featureGroup.clearLayers();
}
现在,多边形要素已被删除,下载按钮应再次触发警报。但是发生的是,尽管控制台仍然记录0并触发了警报,但是在警报上单击“确定”后,代码的ELSE部分仍然运行,并且仍然下载了显然被“清除”的相同geoJSON文件(包含相同的坐标。)
这是我代码中的简单错误,还是与Leaflet.Draw库有关?
谢谢