Kha*_*ong 5 html javascript asp.net-mvc leaflet
我对使用 Leaflet 及其插件很陌生。目前我正在处理一个项目,用标记标记地图中的特定位置。
但不知何故,如果有多个标记,我不知道如何从地图中删除特定标记。
标记绑定到带有一些信息和框中的按钮的弹出窗口。因此,我的目标是在单击按钮后删除特定标记。
var popupContent =
'<p>Some Infomation</p></br>' +
'<p>' + date + '</p></br>' +
'<button onclick=clearMarker()>Clear Marker</button>';
myMarker = L.marker([lat, lng], { icon: redMarker, draggable: false });
var myPopup = myMarker.bindPopup(popupContent, { closeButton: false });
map.addLayer(myMarker);
Run Code Online (Sandbox Code Playgroud)
如果我添加标记的方式有任何改进,请告诉我(很确定有更好的方法来实现)。
小智 7
尝试使用私有属性,检查jsfiddle
var map = L.map('map').setView([51.505, -0.09], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
var markers = []
function createMarker(coords) {
var id
if (markers.length < 1) id = 0
else id = markers[markers.length - 1]._id + 1
var popupContent =
'<p>Some Infomation</p></br>' +
'<p>test</p></br>' +
'<button onclick="clearMarker(' + id + ')">Clear Marker</button>';
myMarker = L.marker(coords, {
draggable: false
});
myMarker._id = id
var myPopup = myMarker.bindPopup(popupContent, {
closeButton: false
});
map.addLayer(myMarker)
markers.push(myMarker)
}
function clearMarker(id) {
console.log(markers)
var new_markers = []
markers.forEach(function(marker) {
if (marker._id == id) map.removeLayer(marker)
else new_markers.push(marker)
})
markers = new_markers
}
createMarker([51.5, -0.09])
createMarker([51.5, -0.093])
createMarker([51.5, -0.096])
Run Code Online (Sandbox Code Playgroud)