如何通过单击Leaflet中的标记来阻止显示弹出窗口?

时间:2014-10-29 18:55:18

标签: javascript maps leaflet

当我点击Leaflet标记时,我希望弹出窗口不显示。 我不能使用clickable : false,因为它会使标记“作为底层地图的一部分”,这对我来说是不可接受的。我尝试了下一个代码

marker.on('click', function(event) {
  event.originalEvent.preventDefault();
});

没有任何结果。在不使用标记对象的clickable : false属性的情况下,阻止弹出窗口显示的正确方法是什么。

编辑1:我需要的是点击一个自定义按钮打开地图上的所有popus,我点击特定标记后仍然不想弹出显示

5 个答案:

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