当我点击Leaflet标记时,我希望弹出窗口不显示。
我不能使用clickable : false
,因为它会使标记“作为底层地图的一部分”,这对我来说是不可接受的。我尝试了下一个代码
marker.on('click', function(event) {
event.originalEvent.preventDefault();
});
没有任何结果。在不使用标记对象的clickable : false
属性的情况下,阻止弹出窗口显示的正确方法是什么。
编辑1:我需要的是点击一个自定义按钮打开地图上的所有popus,我点击特定标记后仍然不想弹出显示
答案 0 :(得分:5)
不要将弹出窗口绑定到标记。这是一个fiddle,有2个标记。一个有弹出窗口,另一个没有弹出窗口。
L.marker([51, 0]).bindPopup("this is a popup").addTo(map);
L.marker([51, 1.5]).addTo(map);
修改强> 我已经编辑了fiddle并认为它可能就是您所要求的。这是代码的重要部分:
function onClick(event) {
event.target.closePopup();
}
答案 1 :(得分:4)
尝试此解决方法:
marker.bindPopup('my popup content');
// remove openPopup click handler (actually all click handlers)
marker.off('click');
// Do nothing on click. This is not necessary, but now marker
// doesn't act like part of underlying map
marker.on('click', function() {return;});
有关详细信息,请参阅plunker。
答案 2 :(得分:2)
其他答案都没有对我有用(可能是因为Leaflet的更新版本)。我最后跳过了marker.bindPopup()
,只是使用L.popup()
分别创建弹出窗口,然后在我需要它们时调用map.openPopup(thePopup)
。
这样的事情:
var map = L.map(),
popup = L.popup().setContent("Stuff"),
marker = L.marker();
popup.setLatLng(marker.getLatLng());
// In my event handler
map.openPopup(popup);
答案 3 :(得分:1)
Juste从标记的点击事件中删除openPopup
。
marker.bindPopup('My popup!');
marker.off('click', this.openPopup);
答案 4 :(得分:-1)
添加return false。它应该工作。虽然我不太确定。
marker.on('click', function(event) {
event.originalEvent.preventDefault();
return false;
});