【发布时间】:2017-08-22 20:59:05
【问题描述】:
在 openlayers 中绘制多边形时,默认行为似乎是在再次单击第一个顶点或再次单击绘制的最后一个顶点时完成多边形。是否有办法阻止单击最后一个绘制的顶点时绘制完成,以便完成绘制的唯一方法是再次单击多边形的第一个顶点?
【问题讨论】:
标签: openlayers
在 openlayers 中绘制多边形时,默认行为似乎是在再次单击第一个顶点或再次单击绘制的最后一个顶点时完成多边形。是否有办法阻止单击最后一个绘制的顶点时绘制完成,以便完成绘制的唯一方法是再次单击多边形的第一个顶点?
【问题讨论】:
标签: openlayers
我最终通过将绘制交互的 finishCondition 设置为 ol.events.condition.never 来实现这一点。然后我检查我是否点击了我绘制的第一个点,在这种情况下我调用了 finishDrawing() 函数。
【讨论】:
你必须重写这个方法
/**
* Determine if an event is within the snapping tolerance of the start coord.
* @param {ol.MapBrowserEvent} event Event.
* @return {boolean} The event is within the snapping tolerance of the start.
* @private
*/
ol.interaction.Draw.prototype.atFinish_ = function(event) {
这里,potentialFinishCoordinates 变量包含“候选”点,用于确定最后一次点击是否是“完成”绘图。
对于多边形情况,该变量包含第一个和最后一个绘制点。
potentiallyFinishCoordinates = [this.sketchCoords_[0][0],
this.sketchCoords_[0][this.sketchCoords_[0].length - 2]];
尝试删除该数组的第二个元素。
【讨论】: