我这里有一个代码,根据我的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: '© <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
答案 0 :(得分:2)
removeLayer
函数仅从地图中删除图层(基本上隐藏它)。标记仍将保留在layerGroup
上。如果要从图层中删除所有可能要使用的标记
markers.clearLayers();
代替。这将从图层中删除所有当前标记。