删除图层不起作用

时间:2017-12-01 06:45:47

标签: javascript jquery leaflet

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

/* 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);
});

这些代码正在运行但是如果我删除了所有标记,它们会删除但如果我生成一个新标记,旧标记会再次显示。我该如何解决?

我的目标是添加和添加标记,无论它有多少都会删除所有标记。唯一的问题是旧标记再次显示。 TYSM

1 个答案:

答案 0 :(得分:2)

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

markers.clearLayers();

代替。这将从图层中删除所有当前标记。