leaflet.draw 上绘制的标记在移除图层后未被删除
The markers drawn on leaflet.draw are not deleted after removing layer
我创建了一个简单的应用程序来使用传单绘制来添加分数。如果用户取消对话框,绘制的层将被删除。但是,当绘制下一个标记时,先前取消的标记再次出现。这是代码的图片:
// Create Leaflet Draw Control for the draw tools and toolbox
var drawControl = new L.Control.Draw({
draw : {
polygon : false,
polyline : false,
rectangle : false,
circle : false,
circlemarker: false
},
edit : false,
remove: false
});
// Boolean global variable used to control visiblity
var controlOnMap = false;
// Create variable for Leaflet.draw features
var drawnItems = new L.FeatureGroup();
// Function to add the draw control to the map to start editin
function startEdits(){
if(controlOnMap == true){
map.removeControl(drawControl);
controlOnMap = false;
}
map.addControl(drawControl);
controlOnMap = true;
};
// Function to remove the draw control from the map
function stopEdits(){
if(controlOnMap == true){
map.removeControl(drawControl);
controlOnMap = false;
}else{
alert("Edition mode is already stopped")
};
};
// Use the jQuery UI dialog to create a dialog and set options
var dialog = $("#dialog").dialog({
autoOpen: false,
height: 600,
width: 500,
modal: true,
position: {
my: "center center",
at: "center center",
of: "#map"
},
buttons: {
"Add": setData,
"Cancel": function() {
dialog.dialog("close");
map.removeLayer(drawnItems);
}
},
close: function() {
dialog.dialog("close");
map.removeLayer(drawnItems);
}
});
是否有删除绘制的特征或类似功能的功能?
您还必须清除 drawnItems
组:
drawnItems.clearLayers();
map.removeLayer(drawnItems);
更新的绘图库是:Geoman.io
刚才我找到了这个解决方案:
drawnItems.eachLayer(
function(l){
drawnItems.removeLayer(l);
});
不过Falke design的回答比较花哨。谢谢!
我创建了一个简单的应用程序来使用传单绘制来添加分数。如果用户取消对话框,绘制的层将被删除。但是,当绘制下一个标记时,先前取消的标记再次出现。这是代码的图片:
// Create Leaflet Draw Control for the draw tools and toolbox
var drawControl = new L.Control.Draw({
draw : {
polygon : false,
polyline : false,
rectangle : false,
circle : false,
circlemarker: false
},
edit : false,
remove: false
});
// Boolean global variable used to control visiblity
var controlOnMap = false;
// Create variable for Leaflet.draw features
var drawnItems = new L.FeatureGroup();
// Function to add the draw control to the map to start editin
function startEdits(){
if(controlOnMap == true){
map.removeControl(drawControl);
controlOnMap = false;
}
map.addControl(drawControl);
controlOnMap = true;
};
// Function to remove the draw control from the map
function stopEdits(){
if(controlOnMap == true){
map.removeControl(drawControl);
controlOnMap = false;
}else{
alert("Edition mode is already stopped")
};
};
// Use the jQuery UI dialog to create a dialog and set options
var dialog = $("#dialog").dialog({
autoOpen: false,
height: 600,
width: 500,
modal: true,
position: {
my: "center center",
at: "center center",
of: "#map"
},
buttons: {
"Add": setData,
"Cancel": function() {
dialog.dialog("close");
map.removeLayer(drawnItems);
}
},
close: function() {
dialog.dialog("close");
map.removeLayer(drawnItems);
}
});
是否有删除绘制的特征或类似功能的功能?
您还必须清除 drawnItems
组:
drawnItems.clearLayers();
map.removeLayer(drawnItems);
更新的绘图库是:Geoman.io
刚才我找到了这个解决方案:
drawnItems.eachLayer(
function(l){
drawnItems.removeLayer(l);
});
不过Falke design的回答比较花哨。谢谢!