diff --git a/lib/OpenLayers/Layer/Vector.js b/lib/OpenLayers/Layer/Vector.js index 26570f1311..4ede7dcbc8 100644 --- a/lib/OpenLayers/Layer/Vector.js +++ b/lib/OpenLayers/Layer/Vector.js @@ -534,5 +534,24 @@ OpenLayers.Layer.Vector = OpenLayers.Class(OpenLayers.Layer, { preFeatureInsert: function(feature) { }, + /** + * APIMethod: getDataExtent + * Calculates the max extent which includes all of the features. + * + * Returns: + * {} + */ + getDataExtent: function () { + var maxExtent = null; + if( this.features && (this.features.length > 0)){ + var maxExtent = this.features[0].geometry.getBounds(); + for(var i=0; i < this.features.length; i++){ + maxExtent.extend(this.features[i].geometry.getBounds()); + } + } + + return maxExtent; + }, + CLASS_NAME: "OpenLayers.Layer.Vector" }); diff --git a/tests/Layer/Vector.html b/tests/Layer/Vector.html index 77df2a96d6..f1ab1a9839 100644 --- a/tests/Layer/Vector.html +++ b/tests/Layer/Vector.html @@ -16,7 +16,7 @@ } function test_Layer_Vector_addFeatures(t) { - t.plan(4); + t.plan(5); var layer = new OpenLayers.Layer.Vector(name); @@ -43,6 +43,9 @@ } layer.addFeatures([pointFeature], {silent: true}); + + var extent = layer.getDataExtent(); + t.eq(extent.toBBOX(), "-111.04,45.68,-111.04,45.68", "extent from getDataExtent is correct"); } function test_Layer_Vector_removeFeatures(t) {