在OpenLayers中捕获mousemove用于单个图层

时间:2018-04-04 20:20:22

标签: openlayers

我如何在OpenLayers 4中监听只与单个图层有关的mousemove事件,而不是整个地图?

我有ol.layer.Image来自ol.source.ImageCanvas的图层。顶部有缩放控件(" +#34;和" - "按钮)和归属(" i"按钮)。我只需处理与图像层相关的事件,例如点击/鼠标移动/触摸事件/ ...,但忽略其他图层的事件,如缩放控件。

1 个答案:

答案 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' : '';
});