OpenLayers 3:在 DrawInteraction 之后省略 SelectInteraction

OpenLayers 3: Omit SelectInteraction after DrawInteraction

我有一张带有 ol.interaction.Select 的地图,当我想放置一些新对象(一个点)时,我添加了一个 ol.interaction.Draw

现在,只要我单击创建 PointselectInteraction 就会触发 select 事件。由于 drawend 事件在 select 事件之前触发,我无法确定它是真正的 select 还是因为我在画画。

我也试过 activate/deactivate selectInteractiondrawend 事件中用 setTimeout,但没有成功。一旦我激活 selectInteractionselect 事件就会触发。

发生这种情况的原因可能是单击事件发生在您单击后 251 毫秒。这是一个已知问题 -->check it here。它是以这种方式构建的,因此可以识别双击。激活这两种交互肯定会导致问题。必须有人让位。是select吗?还是平局?或两者?所以 ol3 认为,如果您将它们都设置为活动状态,则意味着您希望它们都处于活动状态。 在 drawstart 上禁用 select 交互,然后在 drawend 上尝试在 drawend 事件发生 251 毫秒后启用 select 交互。像这样:

setTimeout(function(){
selectInteraction.setActive(true)
},300)
; 

不过,这是糟糕的编程。但我真的找不到一种优雅的方法来克服它。