From 79c6787e52a1f26787d4c438691bf56dfe12d8bf Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 4 Dec 2013 14:59:30 +0100 Subject: [PATCH] Add ol.source.Vector#clear --- src/ol/source/vectorsource.js | 10 ++++++++++ test/spec/ol/source/vectorsource.test.js | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/ol/source/vectorsource.js b/src/ol/source/vectorsource.js index 0503486648..cf8ca377ae 100644 --- a/src/ol/source/vectorsource.js +++ b/src/ol/source/vectorsource.js @@ -81,6 +81,16 @@ ol.source.Vector.prototype.addFeature = function(feature) { }; +/** + * FIXME empty description for jsdoc + */ +ol.source.Vector.prototype.clear = function() { + this.rBush_.forEach(this.removeFeatureInternal_, this); + this.rBush_.clear(); + this.dispatchChangeEvent(); +}; + + /** * @param {function(this: T, ol.Feature): S} f Callback. * @param {T=} opt_obj The object to be used as the value of 'this' within f. diff --git a/test/spec/ol/source/vectorsource.test.js b/test/spec/ol/source/vectorsource.test.js index ba7268a1ec..5e27f48de5 100644 --- a/test/spec/ol/source/vectorsource.test.js +++ b/test/spec/ol/source/vectorsource.test.js @@ -82,6 +82,24 @@ describe('ol.source.Vector', function() { }); }); + describe('#clear', function() { + + it('removes all features', function() { + var changeSpy = sinon.spy(); + goog.events.listen(vectorSource, 'change', changeSpy); + var removeFeatureSpy = sinon.spy(); + goog.events.listen(vectorSource, 'removefeature', removeFeatureSpy); + vectorSource.clear(); + expect(vectorSource.getAllFeatures()).to.eql([]); + expect(vectorSource.isEmpty()).to.be(true); + expect(changeSpy).to.be.called(); + expect(changeSpy.callCount).to.be(1); + expect(removeFeatureSpy).to.be.called(); + expect(removeFeatureSpy.callCount).to.be(10); + }); + + }); + describe('#forEachFeatureInExtent', function() { it('is called the expected number of times', function() {