如果在 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
部分,您设置了属性 href
和 download
。考虑在 if
部分删除它们,否则它们将永远保留在那里,因为第一次下载,每次新点击都会触发下载
我有一个使用 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
部分,您设置了属性 href
和 download
。考虑在 if
部分删除它们,否则它们将永远保留在那里,因为第一次下载,每次新点击都会触发下载