在我的应用中,我将一个临时可拖动标记添加到地图并打开其弹出窗口。我发现当拖动标记时弹出窗口关闭。为了解决这个问题,我按照Force Leaflet popup to stay open when a draggable marker is moved
添加了代码var marker = new L.Marker([setLat, setLng], {icon:questionIcon, draggable:true});
marker.bindPopup("popup content").addTo(map).openPopup();
marker.on('dragend', function(e) {
marker.openPopup();
});
但是,我还要确保如果用户手动关闭弹出窗口(使用标准' x'右上角),则会从地图中删除临时标记。所以我补充说......
marker.on('popupclose', function(e) {
map.removeLayer(marker);
});
...但是,拖动标记时也会触发。因此,只要用户尝试通过拖动来重新定位标记,它就会完全消失。
有没有办法区分这两个事件,所以我可以区别对待它们?或者回到原始问题,在拖动标记时禁用弹出窗口?
答案 0 :(得分:4)
我遇到了同样的问题, 为了解决这两个事件,我这样做来解决了这个问题:
marker._popup._closeButton.onclick = function( ){
console.log("click closed ");
map.removeLayer(marker);
}
答案 1 :(得分:2)
我遇到了类似的问题。这是我的解决方案
var IsDragging = false;
marker.on('dragstart', function (event) {
IsDragging = true;
});
marker.on('dragend', function (event) {
marker.openPopup();
IsDragging = false;
});
map.on('popupclose', function(e) {
setTimeout(function(){
if(LS.Send.IsDragging == false){
map.removeLayer(LS.Send.Marker);
}
},300);
});