diff --git a/src/ol/geom/polygon.js b/src/ol/geom/polygon.js index a1ae17778e..bcd1dabd7e 100644 --- a/src/ol/geom/polygon.js +++ b/src/ol/geom/polygon.js @@ -153,11 +153,18 @@ ol.geom.Polygon.prototype.getInteriorPoint = function() { * @return {Array.} Linear rings. */ ol.geom.Polygon.prototype.getLinearRings = function() { + var layout = this.layout; + var flatCoordinates = this.flatCoordinates; + var ends = this.ends_; var linearRings = []; - var coordinates = this.getCoordinates(); + var offset = 0; var i, ii; - for (i = 0, ii = coordinates.length; i < ii; ++i) { - linearRings.push(new ol.geom.LinearRing(coordinates[i])); + for (i = 0, ii = ends.length; i < ii; ++i) { + var end = ends[i]; + var linearRing = new ol.geom.LinearRing(null); + linearRing.setFlatCoordinates(layout, flatCoordinates.slice(offset, end)); + linearRings.push(linearRing); + offset = end; } return linearRings; };