如果在 ELSE 被接受后不工作(潜在 Leaflet.Draw 问题)

IF not working after ELSE has been accepted (potential Leaflet.Draw issue)

我有一个使用 Leaflet.Draw 库的 Leaflet 地图,允许用户绘制 geoJSON 多边形并下载文件(在将其转换为 .KML 格式后)。我有一个问题,如果没有绘制多边形,下载功能仍然会 运行,所以我尝试使用查看 geoJSON 文件长度的 IF/ELSE 语句来解决这个问题。

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 并且警报被触发,但在警报上单击 "ok" 之后,代码的 ELSE 部分仍然是 运行s 并且相同的 geoJSON 文件显然是 "cleared" 仍在下载(包含相同的坐标)。

这是我代码中的一个简单错误,还是与 Leaflet.Draw 库有关?

谢谢

在您的 else 部分,您设置了属性 hrefdownload。考虑在 if 部分删除它们,否则它们将永远保留在那里,因为第一次下载,每次新点击都会触发下载