2014-10-09 19 views
2

在我的應用程序中,我添加一個臨時拖動標記到地圖並打開它的彈出窗口。我發現當標記被拖動時,彈出窗口關閉。爲了解決這個問題,我添加的代碼按Force Leaflet popup to stay open when a draggable marker is moved傳單popuphlose事件觸發,同時拖動標記

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

......但是,這也會在拖動標記時觸發。因此,只要用戶試圖通過拖動標記來重新定位標記,它就會完全消失。

是否有辦法區分這兩個事件,以便我可以以不同方式處理它們?或者回到原來的問題,當拖動標記時禁用popupclose發生?

回答

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); 
}); 
相關問題