如何禁用事件

时间:2016-04-05 08:33:26

标签: openlayers-3

如何禁用或隐藏叠加层下的要素事件?事件" map.on(' SingleClick'"状况良好但不是"事件map.on(' pointermove'" of覆盖层下方的标记。

你有什么想法吗?

enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

这是你可以做的事情。在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对象。我们的想法是覆盖事件的坐标和像素属性,这使得其余的交互按照我的意愿行事:什么都不做。

答案 1 :(得分:0)

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