openlayers如何处理map onclick和draw同时出现的问题

Openlayers how to handle map onclick and draw at the same time problem

我正在使用 tileWMS 从地理服务器获取图层。
因此,当我单击地图时,如果单击图层,我将获得要素信息,但是如果我绘制多边形,如果点在图层上,则地图上的单击触发器也会 运行。 我尝试过与矢量交互 select,但不适用于 tileWMS。 我可以在绘制后删除绘制交互,但我该如何处理才能在绘制时不获取特征信息? 是否可以使用 tileWMS 执行 addinteraction 和 removeinteraction 之类的操作? 我最近在使用 openlayers 3。

https://i.ibb.co/5vZwPYx/2.png

谢谢。

// this is my layer & map
var layer = new ol.layer.Tile(
{
    source      : new ol.source.TileWMS(
    {
        url: 'http://localhost:2121/geoserver/geoserver/wms',
        params: {'LAYERS': 'geoserver:coordinate_polygon', 'TILED': true},
        serverType: 'geoserver'
    })    
});

var map = new ol.Map(
{    
    pixelRatio: 1,
    controls: ol.control.defaults().extend([zoomslider, mousePositionControl]),
    loadTilesWhileInteracting: true,
    layers: [osm, layer, layer_draw_vector],
    target: 'map',
    view: view
});
// ----------------------------

//the trigger
map.on('singleclick', function(evt)
{
    //doin request to geoserver let's say I alert the response
    alert(feature[0].properties.name;
}

map.addInteraction(interaction_draw);
interaction_draw.on('drawend',function(e)
{
    alert(e.feature.getGeometry().getExtent());
}); 
// ----------------------------

如果您使用 interaction_draw.setActive(true);interaction_draw.setActive(false); 打开和关闭交互,您可以在继续任何地图点击操作之前检查交互是否处于活动状态。

map.on('singleclick', function(evt)
{
    if (interaction_draw.getActive()) return;

    ...
    ...
    ...

});