如果接受ELSE后无法正常工作(潜在的Leaflet.Draw问题)

我有一个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库有关?

谢谢

shimin_2222 回答:如果接受ELSE后无法正常工作(潜在的Leaflet.Draw问题)

else部分中,设置属性hrefdownload。考虑将它们从if部分中删除,否则它们将永远存在,并且自首次下载以来,每次新点击都会触发下载

本文链接:https://www.f2er.com/3158725.html

大家都在问