diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index fa5f4c4122..db597c87b3 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -233,6 +233,36 @@ OpenLayers.Layer.prototype = { extent.getHeight() / viewSize.h ); }, + /** Calculates using px-> lonlat translation functions on tl and br + * corners of viewport + * + * @returns A Bounds object which represents the lon/lat bounds of the + * current viewPort. + * @type OpenLayers.Bounds + */ + getExtent: function () { + var extent = null; + + + var size = this.map.getSize(); + + var tlPx = new OpenLayers.Pixel(0,0); + var tlLL = this.getLonLatFromViewPortPx(tlPx); + + var brPx = new OpenLayers.Pixel(size.w, size.h); + var brLL = this.getLonLatFromViewPortPx(brPx); + + if ((tlLL != null) && (brLL != null)) { + extent = new OpenLayers.Bounds(tlLL.lon, + brLL.lat, + brLL.lon, + tlLL.lat); + } + + return extent; + }, + + /** * @param {OpenLayers.Pixel} viewPortPx * @@ -277,47 +307,7 @@ OpenLayers.Layer.prototype = { // this should be implemented by subclasses }, - /** - * @returns A Bounds object which represents the lon/lat bounds of the - * current viewPort. - * @type OpenLayers.Bounds - */ - getExtent: function () { - // this should be implemented by subclasses - var extent = null; - var center = this.map.getCenter(); - if (center != null) { - - var res = this.getResolution(); - var size = this.map.getSize(); - var w_deg = size.w * res; - var h_deg = size.h * res; - - return new OpenLayers.Bounds(center.lon - w_deg / 2, - center.lat - h_deg / 2, - center.lon + w_deg / 2, - center.lat + h_deg / 2); - - } - - return extent; -/** ALT CALCULATION FOR GETEXTENT - - var size = this.getSize(); - - var tlPx = new OpenLayers.Pixel(0,0); - var tlLL = this.getLonLatFromViewPortPx(tlPx); - - var brPx = new OpenLayers.Pixel(size.w, size.h); - var brLL = this.getLonLatFromViewPortPx(brPx); - - extent = new OpenLayers.Bounds(tlLL.lon, - brLL.lat, - brLL.lon, - tlLL.lat); -**/ - }, /** @final @type String */ CLASS_NAME: "OpenLayers.Layer" diff --git a/lib/OpenLayers/Layer/Grid.js b/lib/OpenLayers/Layer/Grid.js index f25558961e..f75e0668dd 100644 --- a/lib/OpenLayers/Layer/Grid.js +++ b/lib/OpenLayers/Layer/Grid.js @@ -263,6 +263,33 @@ OpenLayers.Layer.Grid.prototype = return maxRes / Math.pow(2, zoom); }, + /** Calculates based on resolution, center, and mapsize + * + * @returns A Bounds object which represents the lon/lat bounds of the + * current viewPort. + * @type OpenLayers.Bounds + */ + getExtent: function () { + var extent = null; + + var center = this.map.getCenter(); + if (center != null) { + + var res = this.getResolution(); + var size = this.map.getSize(); + var w_deg = size.w * res; + var h_deg = size.h * res; + + return new OpenLayers.Bounds(center.lon - w_deg / 2, + center.lat - h_deg / 2, + center.lon + w_deg / 2, + center.lat + h_deg / 2); + + } + + return extent; + }, + /** * @param {OpenLayers.Bounds} bounds *