Javascript 如果在ELSE被接受后不工作(潜在的传单、抽签问题)
我有一个传单地图,它使用传单.Draw库,允许用户绘制geoJSON多边形并下载文件(在文件转换为.KML格式后)。我遇到了一个问题,即如果没有绘制多边形,下载函数仍将运行,因此我尝试使用查看geoJSON文件长度的if/ELSE语句来修复这个问题Javascript 如果在ELSE被接受后不工作(潜在的传单、抽签问题),javascript,if-statement,leaflet,leaflet.draw,Javascript,If Statement,Leaflet,Leaflet.draw,我有一个传单地图,它使用传单.Draw库,允许用户绘制geoJSON多边形并下载文件(在文件转换为.KML格式后)。我遇到了一个问题,即如果没有绘制多边形,下载函数仍将运行,因此我尝试使用查看geoJSON文件长度的if/ELSE语句来修复这个问题 document.getElementById('export').onclick = function(e) { //extract GeoJson from featureGroup var data = featureGroup.to
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文件仍在下载(包含相同的坐标)
这是我代码中的一个简单错误,还是与传单Draw库有关
谢谢在您的
其他部分
中,您设置了属性href
和下载
。考虑在<代码>中删除它们,如果部分,或者它们将永远存在,并且自从第一次下载以来,每次新的点击都会触发下载谢谢,删除属性就行了!非常感谢。