From d39a5cec75c0dabbe2e184f756b27b538900d064 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Tue, 21 Jan 2014 08:49:10 +0100 Subject: [PATCH] Create polygons directly from flat coordinates --- src/ol/geom/multipolygon.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/ol/geom/multipolygon.js b/src/ol/geom/multipolygon.js index debf57125d..4737d3a55b 100644 --- a/src/ol/geom/multipolygon.js +++ b/src/ol/geom/multipolygon.js @@ -191,12 +191,20 @@ ol.geom.MultiPolygon.prototype.getSimplifiedGeometryInternal = * @return {Array.} Polygons. */ ol.geom.MultiPolygon.prototype.getPolygons = function() { - // FIXME we should construct the polygons directly from the flat coordinates - var coordinates = this.getCoordinates(); + var layout = this.layout; + var flatCoordinates = this.flatCoordinates; + var endss = this.endss_; var polygons = []; + var offset = 0; var i, ii; - for (i = 0, ii = coordinates.length; i < ii; ++i) { - polygons.push(new ol.geom.Polygon(coordinates[i])); + for (i = 0, ii = endss.length; i < ii; ++i) { + var ends = endss[i]; + var end = ends[ends.length - 1]; + var polygon = new ol.geom.Polygon(null); + polygon.setFlatCoordinates( + layout, flatCoordinates.slice(offset, end), ends.slice()); + polygons.push(polygon); + offset = end; } return polygons; };