diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index c4bba40bad..ad79a36d57 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -409,15 +409,19 @@ OpenLayers.Layer.prototype = { * @type OpenLayers.LonLat */ getLonLatFromViewPortPx: function (viewPortPx) { - var size = this.map.getSize(); - var center = this.map.getCenter(); - var res = this.map.getResolution(); - - var delta_x = viewPortPx.x - (size.w / 2); - var delta_y = viewPortPx.y - (size.h / 2); + var lonlat = null; + if (viewPortPx != null) { + var size = this.map.getSize(); + var center = this.map.getCenter(); + var res = this.map.getResolution(); - return new OpenLayers.LonLat(center.lon + delta_x * res , - center.lat - delta_y * res); + var delta_x = viewPortPx.x - (size.w / 2); + var delta_y = viewPortPx.y - (size.h / 2); + + lonlat = new OpenLayers.LonLat(center.lon + delta_x * res , + center.lat - delta_y * res); + } + return lonlat; }, /** @@ -428,12 +432,16 @@ OpenLayers.Layer.prototype = { * @type OpenLayers.Pixel */ getViewPortPxFromLonLat: function (lonlat) { - var resolution = this.map.getResolution(); - var extent = this.map.getExtent(); - return new OpenLayers.Pixel( - Math.round(1/resolution * (lonlat.lon - extent.left)), - Math.round(1/resolution * (extent.top - lonlat.lat)) - ); + var px = null; + if (lonlat != null) { + var resolution = this.map.getResolution(); + var extent = this.map.getExtent(); + px = new OpenLayers.Pixel( + Math.round(1/resolution * (lonlat.lon - extent.left)), + Math.round(1/resolution * (extent.top - lonlat.lat)) + ); + } + return px; }, /**