0

我正在寻找一种方法让 PointerInteraction/DrawInteraction 的“stopDown”功能适用于 Select 交互。我在地图上有一个随附的单击侦听器,当将选择交互添加到地图中时,该侦听器不应发射。

我试图在 click/pointerdown/pointerup 时停止事件传播,但它似乎阻止了任何地图平移工作。

如何完成 Select 交互的“stopDown”?

4

1 回答 1

0

我使用 mouseOver var 的解决方法(由 pointMove 交互或地图事件设置)来确定鼠标是否悬停功能,然后在地图点击事件中对其进行测试。

例如

var mouseOver;

map.on('pointermove', function(evt) {
     mouseOver = (map.getFeaturesAtPixel(evt.pixel).length > 0);
});

map.on('singleclick', function(evt) {

    if (mouseOver()) { return; }

    .....
    .....
    .....
    .....

});

在更复杂的情况下,您需要为您添加/删除的每个单击选择交互添加/删除一个 pointerMove 选择交互,除了设置 mouseOver 之外什么都不做

var interHover = new ol.interaction.Select({
    condition: ol.events.condition.pointerMove,
    style: function(feature) {
        // return the unselected style
    },
    filter: // same as click select interaction
});

interHover.on( "select", function(evt) { mouseOver = (evt.selected.length > 0); });
于 2018-11-29T13:32:24.330 回答