diff --git a/src/ol/geom/multilinestring.js b/src/ol/geom/multilinestring.js index b95dd42875..5edb6f2267 100644 --- a/src/ol/geom/multilinestring.js +++ b/src/ol/geom/multilinestring.js @@ -112,6 +112,27 @@ ol.geom.MultiLineString.prototype.getLineStrings = function() { }; +/** + * @return {Array.} Flat midpoints. + */ +ol.geom.MultiLineString.prototype.getFlatMidpoints = function() { + var midpoints = []; + var flatCoordinates = this.flatCoordinates; + var offset = 0; + var ends = this.ends_; + var stride = this.stride; + var i, ii; + for (i = 0, ii = ends.length; i < ii; ++i) { + var end = ends[i]; + var midpoint = ol.geom.flat.lineStringInterpolate( + flatCoordinates, offset, end, stride, 0.5); + goog.array.extend(midpoints, midpoint); + offset = end; + } + return midpoints; +}; + + /** * @inheritDoc */ diff --git a/test/spec/ol/geom/multilinestring.test.js b/test/spec/ol/geom/multilinestring.test.js index b92928eb14..c3fdb0e174 100644 --- a/test/spec/ol/geom/multilinestring.test.js +++ b/test/spec/ol/geom/multilinestring.test.js @@ -69,6 +69,14 @@ describe('ol.geom.MultiLineString', function() { expect(multiLineString.getStride()).to.be(2); }); + describe('#getFlatMidpoints', function() { + + it('returns the expected result', function() { + expect(multiLineString.getFlatMidpoints()).to.eql([2, 3, 6, 7]); + }); + + }); + }); describe('construct with 3D coordinates', function() {