diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index 3cf5d7ef4d..f18374d21c 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -997,6 +997,8 @@ OpenLayers.Layer = OpenLayers.Class({ /** * APIMethod: getViewPortPxFromLonLat + * Returns a pixel location given a map location. This method will return + * fractional pixel values. * * Parameters: * lonlat - {} @@ -1011,8 +1013,8 @@ OpenLayers.Layer = OpenLayers.Class({ 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)) + (1/resolution * (lonlat.lon - extent.left)), + (1/resolution * (extent.top - lonlat.lat)) ); } return px; diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index 2639317132..5362cd826e 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -1593,8 +1593,8 @@ OpenLayers.Map = OpenLayers.Class({ var newPx = this.getViewPortPxFromLonLat(lonlat); if ((originPx != null) && (newPx != null)) { - this.layerContainerDiv.style.left = (originPx.x - newPx.x) + "px"; - this.layerContainerDiv.style.top = (originPx.y - newPx.y) + "px"; + this.layerContainerDiv.style.left = Math.round(originPx.x - newPx.x) + "px"; + this.layerContainerDiv.style.top = Math.round(originPx.y - newPx.y) + "px"; } }, @@ -2022,17 +2022,23 @@ OpenLayers.Map = OpenLayers.Class({ /** * APIMethod: getPixelFromLonLat + * Returns a pixel location given a map location. The map location is + * translated to an integer pixel location (in viewport pixel + * coordinates) by the current base layer. * * Parameters: - * lonlat - {} + * lonlat - {} A map location. * * Returns: * {} An OpenLayers.Pixel corresponding to the - * translated into view port - * pixels by the current base layer. + * translated into view port pixels by the current + * base layer. */ getPixelFromLonLat: function (lonlat) { - return this.getViewPortPxFromLonLat(lonlat); + var px = this.getViewPortPxFromLonLat(lonlat); + px.x = Math.round(px.x); + px.y = Math.round(px.y); + return px; }, @@ -2116,7 +2122,7 @@ OpenLayers.Map = OpenLayers.Class({ */ getLayerPxFromLonLat: function (lonlat) { //adjust for displacement of layerContainerDiv - var px = this.getViewPortPxFromLonLat(lonlat); + var px = this.getPixelFromLonLat(lonlat); return this.getLayerPxFromViewPortPx(px); },