From 033e2e7dd84e9fc9237e472fb1a0d51858788f2f Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Mon, 10 Mar 2014 15:45:18 +0100 Subject: [PATCH] Add ol.geom.MultiPoint#appendPoint --- src/ol/geom/multipoint.exports | 1 + src/ol/geom/multipoint.js | 16 ++++++++++++++++ test/spec/ol/geom/multipoint.test.js | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/src/ol/geom/multipoint.exports b/src/ol/geom/multipoint.exports index 97dff56f42..11a911aabb 100644 --- a/src/ol/geom/multipoint.exports +++ b/src/ol/geom/multipoint.exports @@ -1,4 +1,5 @@ @exportSymbol ol.geom.MultiPoint +@exportProperty ol.geom.MultiPoint.prototype.appendPoint @exportProperty ol.geom.MultiPoint.prototype.clone @exportProperty ol.geom.MultiPoint.prototype.getCoordinates @exportProperty ol.geom.MultiPoint.prototype.getPoints diff --git a/src/ol/geom/multipoint.js b/src/ol/geom/multipoint.js index ad1d767e7a..7903c010b2 100644 --- a/src/ol/geom/multipoint.js +++ b/src/ol/geom/multipoint.js @@ -1,5 +1,7 @@ goog.provide('ol.geom.MultiPoint'); +goog.require('goog.array'); +goog.require('goog.asserts'); goog.require('ol.extent'); goog.require('ol.geom.GeometryType'); goog.require('ol.geom.Point'); @@ -22,6 +24,20 @@ ol.geom.MultiPoint = function(coordinates, opt_layout) { goog.inherits(ol.geom.MultiPoint, ol.geom.SimpleGeometry); +/** + * @param {ol.geom.Point} point Point. + */ +ol.geom.MultiPoint.prototype.appendPoint = function(point) { + goog.asserts.assert(point.getLayout() == this.layout); + if (goog.isNull(this.flatCoordinates)) { + this.flatCoordinates = point.getFlatCoordinates().slice(); + } else { + goog.array.extend(this.flatCoordinates, point.getFlatCoordinates()); + } + this.dispatchChangeEvent(); +}; + + /** * @inheritDoc */ diff --git a/test/spec/ol/geom/multipoint.test.js b/test/spec/ol/geom/multipoint.test.js index 336b5558c9..476fabb6d7 100644 --- a/test/spec/ol/geom/multipoint.test.js +++ b/test/spec/ol/geom/multipoint.test.js @@ -37,6 +37,13 @@ describe('ol.geom.MultiPoint', function() { expect(multiPoint.getStride()).to.be(2); }); + it('can append points', function() { + multiPoint.appendPoint(new ol.geom.Point([1, 2])); + expect(multiPoint.getCoordinates()).to.eql([[1, 2]]); + multiPoint.appendPoint(new ol.geom.Point([3, 4])); + expect(multiPoint.getCoordinates()).to.eql([[1, 2], [3, 4]]); + }); + }); describe('construct with 2D coordinates', function() { @@ -170,3 +177,4 @@ describe('ol.geom.MultiPoint', function() { goog.require('ol.extent'); goog.require('ol.geom.MultiPoint'); +goog.require('ol.geom.Point');