add getDataExtent() method to layer (experimental) and to markers layer (api supported). thanks for the feature request and original patch, anonymous ol-er :-) (Closes #750)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@4051 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -723,6 +723,18 @@ OpenLayers.Layer = OpenLayers.Class({
|
|||||||
return this.getZoomForResolution(idealResolution);
|
return this.getZoomForResolution(idealResolution);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: getDataExtent
|
||||||
|
* Calculates the max extent which includes all of the data for the layer.
|
||||||
|
* This function is to be implemented by subclasses.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* {<OpenLayers.Bounds>}
|
||||||
|
*/
|
||||||
|
getDataExtent: function () {
|
||||||
|
//to be implemented by subclasses
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* APIMethod: getZoomForResolution
|
* APIMethod: getZoomForResolution
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -139,6 +139,27 @@ OpenLayers.Layer.Markers = OpenLayers.Class(OpenLayers.Layer, {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APIMethod: getDataExtent
|
||||||
|
* Calculates the max extent which includes all of the markers.
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* {<OpenLayers.Bounds>}
|
||||||
|
*/
|
||||||
|
getDataExtent: function () {
|
||||||
|
var maxExtent = null;
|
||||||
|
|
||||||
|
if ( this.markers && (this.markers.length > 0)) {
|
||||||
|
var maxExtent = new OpenLayers.Bounds();
|
||||||
|
for(var i=0; i < this.markers.length; i++) {
|
||||||
|
var marker = this.markers[i];
|
||||||
|
maxExtent.extend(marker.lonlat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxExtent;
|
||||||
|
},
|
||||||
|
|
||||||
CLASS_NAME: "OpenLayers.Layer.Markers"
|
CLASS_NAME: "OpenLayers.Layer.Markers"
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -49,6 +49,34 @@
|
|||||||
layer.destroy();
|
layer.destroy();
|
||||||
t.eq( layer.map, null, "layer.map is null after destroy" );
|
t.eq( layer.map, null, "layer.map is null after destroy" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_03_Layer_Markers_getDataExtent(t) {
|
||||||
|
t.plan( 4 );
|
||||||
|
|
||||||
|
var layer = {};
|
||||||
|
var ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
|
||||||
|
t.eq(ret, null, "does not crash, returns null on layer with null 'this.markers'");
|
||||||
|
|
||||||
|
layer.markers = [];
|
||||||
|
ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
|
||||||
|
t.eq(ret, null, "returns null on layer with empty 'this.markers'");
|
||||||
|
|
||||||
|
layer.markers.push({
|
||||||
|
'lonlat': new OpenLayers.LonLat(4,5)
|
||||||
|
});
|
||||||
|
var expectedBounds = new OpenLayers.Bounds(4,5,4,5);
|
||||||
|
ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
|
||||||
|
t.ok(ret.equals(expectedBounds), "returns expected bounds with only one marker");
|
||||||
|
|
||||||
|
layer.markers.push({
|
||||||
|
'lonlat': new OpenLayers.LonLat(1,2)
|
||||||
|
});
|
||||||
|
var expectedBounds = new OpenLayers.Bounds(1,2,4,5);
|
||||||
|
ret = OpenLayers.Layer.Markers.prototype.getDataExtent.apply(layer, []);
|
||||||
|
t.ok(ret.equals(expectedBounds), "returns expected bounds with multiple markers");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// -->
|
// -->
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
Reference in New Issue
Block a user