如何禁用事件

How to disable events

如何禁用或隐藏叠加层下的功能事件?事件 "map.on ( 'SingleClick'" 很好,但叠加层下方标记的 "event map.on (' pointermove'" 不是。

你有想法吗?

这是您可以做的事情。在 pointermove 事件发生时调用的方法中,您可以检查以下属性的值:

  • evt.originalEvent.target - 始终等于作为事件目标的 dom 元素。例如,当鼠标悬停在弹出窗口时,它可以等于 <div id="popup-content">...</div>
  • evt.originalEvent.currentTarget - 将始终等于 openlayers
  • 的视口 div

你可以做的是:当 evt.originalEvent.target 不是 OpenLayers 的视口时什么也不做。

2016-04-13更新

我不得不做一些非常相似的事情。我在地图上有一个叠加层,我想防止 pointermove 出现在它下面。这是我所做的:

var target = evt.originalEvent.target;
if ($(this.getElement()).has(target)) {
  evt.coordinate = [Infinity, Infinity];
  evt.pixel = [Infinity, Infinity];
}

在上面,this代表ol.Overlay对象。这个想法是覆盖事件的坐标和像素属性,这使得其余的交互按照我想要的方式进行:什么都不做。

var container = document.getElementById('popup');    
...
container.onmousemove = function(evt) {
    evt.stopPropagation();
    tooltip.innerHTML = "";
};