我正在使用Openlayers 4构建UI。我收到的请求是不允许用户双击以完成当前的.Draw
交互。我已使用LineString
选项在maxPoints
上管理此内容,并且仅允许用户绘制直线(根据我的要求)。
我需要对Polygon
做同样的事情,但无法让它发挥作用。我尝试过使用finishCondition
,但这没有帮助。
这是否可以在Openlayers中完成?
JS Fiddle在我的机器上发出大量错误,我会尽快添加一个例子。
修改
这是一个基本的jsfiddle。您可以从finishCondition
切换返回布尔值,当设置为true时,单击和双击结束多边形绘图。设置为false时,绘图无法结束。
如果用户双击,我需要找到允许我返回false
的编码,否则返回true。
答案 0 :(得分:1)
好吧,经过进一步的研究,我找到了解决方法,如jsfiddle所示。
我使用on
drawstart
事件来计算和设置多边形中第一个点的坐标,在finishCondition
中,我找到了它所在的当前像素,然后使用看看它是否在点击点的10px以内,如果它不在多边形的末端,则继续绘制。
如果有人可以向我展示一种更优雅的方式来实现此目标,我感到很高兴,但是现在看来,这很有效。
答案 1 :(得分:0)
也请看一下,您可以返回交互的终点坐标
finishCondition: event => {
return this.interaction.finishCoordinate_ === this.interaction.sketchCoords_[0][0];
};