我如何在OpenLayers 4中监听只与单个图层有关的mousemove事件,而不是整个地图?
我有ol.layer.Image
来自ol.source.ImageCanvas
的图层。顶部有缩放控件(" +#34;和" - "按钮)和归属(" i"按钮)。我只需处理与图像层相关的事件,例如点击/鼠标移动/触摸事件/ ...,但忽略其他图层的事件,如缩放控件。
答案 0 :(得分:0)
我很确定你无意中误用了 layer 这个词,它在谈论OpenLayers时具有特定的含义。 图层是图形地图数据,而缩放和归因是控件。
要侦听mousemove事件,请添加侦听器。下面是一个示例,当鼠标悬停在任何特征上时,它会将鼠标指针更改为手:
map.on('pointermove', (evt) => {
if (evt.dragging) {
// the event is a drag gesture, this is handled by openlayers (map move)
return;
}
const pixel = this.map.getEventPixel(evt.originalEvent);
const feature = this.map.forEachFeatureAtPixel(
pixel,
someFeature => someFeature // returns first element,
{
// optional, filter the layers forEachFeatureAtPixel looks at
layerFilter: function(layer) { return true; }
}
);
this.map.getTarget().style.cursor = feature ? 'pointer' : '';
});