diff --git a/lib/OpenLayers/Geometry/Collection.js b/lib/OpenLayers/Geometry/Collection.js index 2a7f85eb40..ccd061ab69 100644 --- a/lib/OpenLayers/Geometry/Collection.js +++ b/lib/OpenLayers/Geometry/Collection.js @@ -177,7 +177,7 @@ OpenLayers.Geometry.Collection = OpenLayers.Class(OpenLayers.Geometry, { if(!(components instanceof Array)) { components = [components]; } - for (var i = 0; i < components.length; i++) { + for(var i=components.length-1; i>=0; --i) { this.removeComponent(components[i]); } }, diff --git a/tests/Geometry/test_Collection.html b/tests/Geometry/test_Collection.html index 36d3e080ac..a51db0394d 100644 --- a/tests/Geometry/test_Collection.html +++ b/tests/Geometry/test_Collection.html @@ -89,7 +89,7 @@ } function test_04_Collection_removeComponents (t) { - t.plan( 4 ); + t.plan( 5 ); coll = new OpenLayers.Geometry.Collection(); point = new OpenLayers.Geometry.Point(0,0); coll.addComponents(point); @@ -100,6 +100,17 @@ bounds = coll.getBounds(); t.eq( bounds.left, 10, "left bound is 10 after removeComponent" ); t.eq( bounds.bottom, 10, "bottom bound is 10 after removeComponent" ); + + coll = new OpenLayers.Geometry.Collection(); + for(var i=0; i<5; ++i) { + coll.addComponents( + new OpenLayers.Geometry.Point(Math.random(), Math.random()) + ); + } + coll.removeComponents(coll.components); + t.eq(coll.components.length, 0, + "remove components even works with multiple components"); + } function test_06_Collection_calculateBounds(t) {