javascript - 删除图层不起作用

标签 javascript jquery leaflet

我这里有一个代码,可以根据我的 php 在 map 上显示一个标记。

/* Generate the map and center it in philipines on start up */
var map = L.map('map').setView([12.8797, 121.7740], 6);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
    attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);

/* Mapping Variables */
var markers = new L.layerGroup();

/* On button click put a marker on the phillipine map base on condition */
$("#btn-generate").click(function(){

/* Other variables */
var d1 = $('#startdate').val();
var d2 = $('#enddate').val();
var fspcode = $('#fspcode').find(":selected").text();

$.ajax({  
    type: 'POST',  
    url: '../../php/pages/sfa/qry_map.php', 
    data: {
    'startdate' : d1,
    'enddate'   : d2,
    'fspcode'   : fspcode
    },
    success: function(data) {
        var data = JSON.parse(data);
        data = data.aaData; 
        if (data.length == 0) {
            sfaMsgbox("Unable to Track. No record found.");
        } else {
            /* Get the lat and long */
            for (var i = 0; i < data.length; i++) {
            var lat = data[i].lat;
            var long = data[i].long;
            var code = data[i].code;
            var vdate = data[i].vdate;
            var type = data[i].type;
            var name = data[i].name;
            var address = data[i].address;
            var wholeinfo = "<b>FSP Assigned : </b>" + code + "<br>" +
              "<b>Visit Date : </b>" + vdate + "<br>" +
              "<b>Customer : </b>" + name + "<br>" +
              "<b>Address : </b>" + address + "<br>" +
              "<b>Type : </b>" + type;

            /* Proceed in creating the map */
            var marker = L.marker([lat,long]);
            marker.bindPopup(wholeinfo, {
                showOnMouseOver: true
            });
            markers.addLayer(marker);
        }
    }
}
});

/* Add the markers */
map.addLayer(markers);

});

这就是我删除它的方式。

$("#removemarker").click(function(){
    /* Remove any existing Markers */
    map.removeLayer(markers);
});

这些代码是有效的,但是如果我删除所有标记,它们确实会删除,但如果我生成一个新标记,旧标记会再次显示。我该如何解决?

我的目标是添加和添加标记,不管有多少然后删除所有标记。唯一的问题是旧标记再次显示。泰斯姆

最佳答案

removeLayer 函数仅从您的 map 中删除图层(基本上隐藏它)。标记仍将保留在 layerGroup 上。如果您想从您可能想要使用的图层中删除所有标记

markers.clearLayers();

相反。这将从图层中删除所有当前标记。

关于javascript - 删除图层不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587988/

相关文章:

javascript - 总共有多少项目?

javascript - 在 Rails 中使用 ajax、jquery 在同一位置提交编辑后的评论

jquery - 菜单项下的箭头

jquery - 相当于 offsetHeight 的 jQuery 是什么?

JQuery 通过 div ID 添加类/删除类

javascript - Leaflet:加载geoJSON文件和特定的PopUp

javascript - Angular.js 和 Foundation 5 Accordion

javascript - Socket.io 没有发出值

angular - 检查标记坐标是否在边界内

r - 如何将传单等值线图中的 NA 值更改为 NULL?