OpenLayers 3:在 DrawInteraction 之后省略 SelectInteraction
OpenLayers 3: Omit SelectInteraction after DrawInteraction
我有一张带有 ol.interaction.Select
的地图,当我想放置一些新对象(一个点)时,我添加了一个 ol.interaction.Draw
。
现在,只要我单击创建 Point
,selectInteraction
就会触发 select
事件。由于 drawend
事件在 select
事件之前触发,我无法确定它是真正的 select
还是因为我在画画。
我也试过 activate/deactivate selectInteraction
在 drawend
事件中用 setTimeout
,但没有成功。一旦我激活 selectInteraction
,select
事件就会触发。
发生这种情况的原因可能是单击事件发生在您单击后 251 毫秒。这是一个已知问题 -->check it here。它是以这种方式构建的,因此可以识别双击。激活这两种交互肯定会导致问题。必须有人让位。是select吗?还是平局?或两者?所以 ol3 认为,如果您将它们都设置为活动状态,则意味着您希望它们都处于活动状态。
在 drawstart
上禁用 select 交互,然后在 drawend
上尝试在 drawend 事件发生 251 毫秒后启用 select 交互。像这样:
setTimeout(function(){
selectInteraction.setActive(true)
},300)
;
不过,这是糟糕的编程。但我真的找不到一种优雅的方法来克服它。
我有一张带有 ol.interaction.Select
的地图,当我想放置一些新对象(一个点)时,我添加了一个 ol.interaction.Draw
。
现在,只要我单击创建 Point
,selectInteraction
就会触发 select
事件。由于 drawend
事件在 select
事件之前触发,我无法确定它是真正的 select
还是因为我在画画。
我也试过 activate/deactivate selectInteraction
在 drawend
事件中用 setTimeout
,但没有成功。一旦我激活 selectInteraction
,select
事件就会触发。
发生这种情况的原因可能是单击事件发生在您单击后 251 毫秒。这是一个已知问题 -->check it here。它是以这种方式构建的,因此可以识别双击。激活这两种交互肯定会导致问题。必须有人让位。是select吗?还是平局?或两者?所以 ol3 认为,如果您将它们都设置为活动状态,则意味着您希望它们都处于活动状态。
在 drawstart
上禁用 select 交互,然后在 drawend
上尝试在 drawend 事件发生 251 毫秒后启用 select 交互。像这样:
setTimeout(function(){
selectInteraction.setActive(true)
},300)
;
不过,这是糟糕的编程。但我真的找不到一种优雅的方法来克服它。