javascript - 如何删除 leaflet.draw 中的绘图层?

标签 javascript leaflet leaflet.draw

在使用绘图工具在自定义 map 上绘制其中一个形状后,使用 leaflet.draw.js 使用 leaflet.js。我有一个弹出的表格,上面写着保存或取消。如果用户按下取消,那么我希望删除绘图。例如,我正在绘制一个矩形。

这是我目前的来源

map.on('draw:created', function(e) {
    var layer = e.layer;
    var type = e.layerType;

    $("#add-drawing").fadeIn(500);

    featureGroup.addLayer(e.layer); // Adds rectangle

    $("a.cancelD").on("click", function() {
        $("#add-drawing").fadeOut(500);

        // THESE ARE THE METHODS I HAVE TRIED TO REMOVE THE RECTANGLE
        map.removeLayer(layer);
        featureGroup.removeLayer(layer);
        map.removeLayer(e);
        featureGroup.removeLayer(e);
    });     
});

这些似乎都不起作用。我可以使用工具箱删除图层,但是我不会在我希望提交的表单中提交任何信息。

如何在按下表单上的取消按钮时删除我绘制的对象?

最佳答案

既然您要添加到 featureGroup,您说它有效,那么您也应该从 featureGroup 中删除。调用 featureGroup.removeLayer(e.layer)featureGroup.removeLayer(layer)(因为 layer 持有对 e.layer 的引用) 应该工作。

这是一个关于 Plunker 的工作示例:http://plnkr.co/edit/kPvYbH?p=preview

在我看来,唯一的结论可能是您的事件没有触发,或者您遇到了某种奇怪的范围问题,但这很容易调试:

$("a.cancelD").on("click", function() {
    console.log('Click fired!'); // Seeing this in your console, event works
    console.log(featureGroup); // Should return featureGroup instance, scope ok
    console.log(e.layer); // Should return polygon instance, scope ok

    // If all of the above works, this should too
    featureGroup.removeLayer(e.layer);
});     

关于javascript - 如何删除 leaflet.draw 中的绘图层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821651/

相关文章:

javascript - geoJson 层保存 [for send DB] 在 map-Leaflet-Draw 上绘制的特征

c# - 在 Google Earth API KML 文件中搜索字符串值地标?

javascript - 如何计算 Javascript 中两个日期之间的年、月和日差?

javascript - 传单标记 'dragend' 触发 'click'

leaflet - 如何在Leaflet map 上实现点击+按住(长按)?

传单绘制后失去形状

javascript - 如何干燥我的 CouchDB View ?

javascript - 返回一个值并将其显示在列表中

javascript - 不同的字体来源 leaflet-awesome-marker 和 Leaflet-easy-button

leaflet - 使用 Leaflet.Draw 工具栏以英尺显示折线长度