На карте, созданной с помощью Leaflet, я создал кнопку для экспорта и загрузки данных в виде geoJSON, нарисованного ранее пользователем с помощью Leaflet.draw .
Чтобы предотвратить пустую загрузку, язапрашивая существование данных.
В инструменте рисования листовки созданные данные хранятся в layergroup
с именем 'layerGroup'.
После первой загрузки карты, нажав на кнопку, я получаю предупреждение «Нечего загружать!», Консоль возвращает «Слои в FeatureGroup: 0», и данные не были загружены.Все идет нормально.
В инструменте рисования я могу снова добавлять и удалять данные.После добавления, а затем удаления всех данных в layerGroup не должно быть слоя, и поэтому я должен испытать те же действия, что и раньше, без загрузки.В консоли я получаю сообщение «Слои в featureGroup: 0», предупреждение «Нечего загружать!»появляется, но я не знаю почему, загрузка все еще начинается.
У вас есть идеи, почему мой код так себя ведет?
//Export Button
document.getElementById('export').onclick = function(e) {
//get layer number in var layer_number
var layer_number = featureGroup.getLayers().filter(function(l) {return l instanceof L.Marker} ).length;
console.log("Layers in featureGroup: ", layer_number);
if (layer_number > 0){
// Extract GeoJson from featureGroup
var data = featureGroup.toGeoJSON();
// Stringify the GeoJson
var convertedData = 'text/json;charset=utf-8,'+encodeURIComponent(JSON.stringify(data));
// Create export
document.getElementById('export').setAttribute('href', 'data:' + convertedData);
document.getElementById('export').setAttribute('download',''+timestamp +'.geojson');
//show confirmation popup
$('.confirmation').show();
//hide popup on button click
$('#agree_button').click(function(){
$('.confirmation').hide();
});
}
//message if no feature in featureGroup
else {
alert("There is nothing to download!");
}
}