在openlayers中绘制完成时控制

时间:2017-08-22 20:59:06

标签: openlayers

在openlayers中绘制多边形时,似乎默认行为是在再次单击第一个顶点或再次单击绘制的最后一个顶点时完成多边形。无论如何都要在单击最后绘制的顶点时阻止绘图完成,这样完成绘图的唯一方法是再次单击多边形的第一个顶点?

2 个答案:

答案 0 :(得分:0)

我最终通过将绘制交互的finishCondition设置为ol.events.condition.never来实现此目的。然后我检查是否点击了我绘制的第一个点,在这种情况下我调用了finishDrawing()函数。

答案 1 :(得分:-1)

您必须覆盖此方法

/**
 * 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]];

尝试删除该数组的第二个元素。