Javascript 如何抑制';单击';在地图上绘制时openlayers 3中的事件

Javascript 如何抑制';单击';在地图上绘制时openlayers 3中的事件,javascript,events,event-handling,openlayers,openlayers-3,Javascript,Events,Event Handling,Openlayers,Openlayers 3,我正在使用openlayers 3.20.0。下面的链接将向您展示一个小示例 (在示例中,请参阅控制台以了解日志) 我有一个映射对象作为 this.map = new ol.Map({ layers : [ somelayer ], target : 'map', view : new ol.View({ center : [ -11000000, 4600000 ], zoom : 4 }) }); 这里我在地图上附加了“单点点

我正在使用openlayers 3.20.0。下面的链接将向您展示一个小示例

(在示例中,请参阅控制台以了解日志)

我有一个映射对象作为

this.map = new ol.Map({
    layers : [ somelayer ],
    target : 'map',
    view : new ol.View({
        center : [ -11000000, 4600000 ],
        zoom : 4
    })
});
这里我在地图上附加了“单点点击”和“dblclick

我还在地图上画了互动图,如下所示

this.draw = new ol.interaction.Draw({
    features : features,
    type : "Point"
});
它发出“drawstart”和“drawnd”事件

但当我们绘制一个点时,它也会在地图上发出“singleclick”事件。我们如何防止在绘图时不发出“单次单击”

我知道我们可以在绘图时删除“singleclick”事件侦听器,但我不想删除侦听器并再次添加


是否有其他方法可以抑制此事件。

我也遇到了同样的问题。我用unByKey方法解决了这个问题。每个map.on方法都返回一个唯一的键。您可以使用map.unByKey(singleclick_键)停止单击事件。您可以在更长时间内完成图形后对其进行初始化

因此,您正在寻找类似以下内容:

var singleclick_key= map.on('singleclick', function(evt){
//statements
}
您可以使用以下命令删除此事件:

map.unByKey(singleclick_key);

event.stopPropagation()使用此选项。我也尝试过使用此选项,但不起作用。不清楚您试图抑制的内容,因为如果
单点单击
处于活动状态或未处于活动状态,则不会发生任何变化。但是我认为您正在查找
事件.preventDefault()
。在绘图时,我不希望触发singleclick事件。我还尝试了
事件。stopPropagation()
。但它会先触发drawstart,然后触发drawend,最后触发singleclick事件。如果您想知道为什么要阻止该事件发生,那也会很好。如果这是因为同时有其他工具处于活动状态,则可以在绘图时停用它们。