如何禁用事件
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 = "";
};
如何禁用或隐藏叠加层下的功能事件?事件 "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 = "";
};