选择交互stopDown

时间:2018-11-29 12:30:51

标签: openlayers openlayers-5

我正在寻找一种使PointerInteraction / DrawInteraction的“ stopDown”功能可用于Select交互的方法。 我在地图上有一个附加的点击侦听器,当将选择交互功能添加到地图时,该监听器不会触发。

我试图在单击/指针向下/指针向上时停止事件传播,但似乎停止了任何地图平移的工作。

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

1 个答案:

答案 0 :(得分:0)

我使用mouseOver变体(由pointMove交互或地图事件设置)的变通办法来确定鼠标是否位于要素上方,然后在地图单击事件中对其进行测试。

例如

var mouseOver;

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

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

    if (mouseOver()) { return; }

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

});

在更复杂的情况下,您需要添加/删除指针为添加/删除的每次点击选择互动移动选择互动,除了设置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); });