From 45407e9eda15e9fb13866e86f6102658601b5516 Mon Sep 17 00:00:00 2001 From: Schuyler Erle Date: Tue, 3 Apr 2007 21:02:59 +0000 Subject: [PATCH] add Vector.destroyFeatures() and call it from WFS.moveTo(), which keeps WFS from loading the same set of features multiple times. Includes tests. fixes #622. git-svn-id: http://svn.openlayers.org/trunk/openlayers@2996 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Layer/Vector.js | 8 ++++++++ lib/OpenLayers/Layer/WFS.js | 1 + tests/Layer/test_Vector.html | 18 +++++++++++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/OpenLayers/Layer/Vector.js b/lib/OpenLayers/Layer/Vector.js index 484b7bbe83..f4150faba5 100644 --- a/lib/OpenLayers/Layer/Vector.js +++ b/lib/OpenLayers/Layer/Vector.js @@ -262,6 +262,14 @@ OpenLayers.Layer.Vector.prototype = } }, + /** + */ + destroyFeatures: function () { + for (var i = this.features.length - 1; i >= 0; i--) { + this.features[i].destroy(); + } + }, + /** * @param {String} fid * @param {Object} style diff --git a/lib/OpenLayers/Layer/WFS.js b/lib/OpenLayers/Layer/WFS.js index d9902ec52c..9a927e1fa0 100644 --- a/lib/OpenLayers/Layer/WFS.js +++ b/lib/OpenLayers/Layer/WFS.js @@ -188,6 +188,7 @@ OpenLayers.Layer.WFS.prototype = this.tile.draw(); } else { if (this.vectorMode) { + this.destroyFeatures(); this.renderer.clear(); } else { this.clearMarkers(); diff --git a/tests/Layer/test_Vector.html b/tests/Layer/test_Vector.html index 97e50cf295..6210c0d17f 100644 --- a/tests/Layer/test_Vector.html +++ b/tests/Layer/test_Vector.html @@ -45,7 +45,7 @@ t.ok(layer.features.length == 1, "OpenLayers.Layer.Vector.removeFeatures removes a feature from the features array"); } - function test_Layer_Vector_addsStyle (t) { + function test_Layer_Vector_addStyle (t) { t.plan(2); layer = new OpenLayers.Layer.Vector(name); var map = new OpenLayers.Map('map'); @@ -56,6 +56,22 @@ t.ok( f.style != null, "Feature style is set by layer."); } + function test_Layer_Vector_destroyFeatures (t) { + t.plan(2); + layer = new OpenLayers.Layer.Vector(name); + var map = new OpenLayers.Map('map'); + map.addLayer(layer); + var features = []; + for (var i = 0; i < 5; i++) { + features.push(new OpenLayers.Feature.Vector( + new OpenLayers.Geometry.Point(0,0))); + } + layer.addFeatures(features); + t.eq(layer.features.length, 5, "addFeatures adds 5 features"); + layer.destroyFeatures(); + t.eq(layer.features.length, 0, "destroyFeatures triggers removal"); + } + function test_99_Layer_Vector_destroy (t) { t.plan(1); layer = new OpenLayers.Layer.Vector(name);