传单地图:点击而不是鼠标悬停在标记上的工具提示

Leaflet Map: Tooltip on clicking instead on mouseover a marker

我想在单击我的标记时获得工具提示,但我找不到实现此功能的方法。 Leaflet 似乎只能通过鼠标悬停打开工具提示。

这是我的代码:

var marker = L.marker([x1, y1], {icon: myIcon})
.addTo(map)
.bindTooltip('<?=$desc[$i]?>', {direction:'top', sticky: false, opacity:0.8, offset:[0, -22] });

感谢您查看这段代码。

我认为你可以:

  1. 覆盖 Layer class 中的 _initTooltipInteractions 函数。
  2. 添加另一个方法,比方说 bindClickableTooltip,它共享 与 bindTooltip 相同的逻辑。但不是调用 _initTooltipInteractions,而是调用另一个方法,其中包含您的自定义逻辑。你应该删除这两行
events.mouseover = this._openTooltip;
events.mouseout = this.closeTooltip;

并替换为

events.click = /* a function which handles opening and closing tooltips */

(类似于触摸设备的第 316 行)

一种方法是将事件处理程序添加到 toggle 它自己的工具提示中,例如:

marker
  .bindTooltip('foobar', { sticky: false })
  .on('click', function(ev) {
    marker.toggleTooltip();
  });

谢谢,但行不通。 我试过这个:

var marker = L.marker([x1, y1], {icon: myIcon})
.addTo(map)
.bindTooltip('<?=$desc[$i]?>', {direction:'top', sticky: false, opacity:0.8, offset:[0, -22] });
marker.on('click', function(e) {
        e.target.closeTooltip();
      });
marker.on('dblclick', function(e) {
        e.target.openTooltip();     
      });

这会起作用,但并不完美。因为首先工具提示会在鼠标悬停时自动出现,然后我单击将其关闭,然后我必须双击才能再次打开它。似乎无法阻止在鼠标悬停时打开工具提示,或者?