From 1bd11c19581d59f1b8184507d62ef96720b9d4dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Harrtell?= Date: Tue, 25 Oct 2016 21:57:38 +0200 Subject: [PATCH] Close polygon sketch at all times --- src/ol/interaction/draw.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ol/interaction/draw.js b/src/ol/interaction/draw.js index 970e157e91..554ec6573a 100644 --- a/src/ol/interaction/draw.js +++ b/src/ol/interaction/draw.js @@ -152,7 +152,11 @@ ol.interaction.Draw = function(options) { geometryFunction = function(coordinates, opt_geometry) { var geometry = opt_geometry; if (geometry) { - geometry.setCoordinates(coordinates); + if (mode === ol.interaction.Draw.Mode.POLYGON) { + geometry.setCoordinates([coordinates[0].concat([coordinates[0][0]])]); + } else { + geometry.setCoordinates(coordinates); + } } else { geometry = new Constructor(coordinates); } @@ -617,12 +621,10 @@ ol.interaction.Draw.prototype.finishDrawing = function() { coordinates.pop(); this.geometryFunction_(coordinates, geometry); } else if (this.mode_ === ol.interaction.Draw.Mode.POLYGON) { - // When we finish drawing a polygon on the last point, - // the last coordinate is duplicated as for LineString - // we force the replacement by the first point + // remove the redundant last point in ring coordinates[0].pop(); - coordinates[0].push(coordinates[0][0]); this.geometryFunction_(coordinates, geometry); + coordinates = geometry.getCoordinates(); } // cast multi-part geometries