OpenLayers OpenLayers

Changeset 6831

Show
Ignore:
Timestamp:
04/09/08 11:54:01 (9 months ago)
Author:
tschaub
Message:

Fixing panning for odd-sized viewports (broken in r6492). This makes map.getViewPortPxFromLonLat return fractional pixel values. To get integer pixel values, use map.getPixelFromLonLat. A better solution may be possible in the future. r=crschmidt (closes #1503)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/openlayers/lib/OpenLayers/Layer.js

    r6540 r6831  
    998998    /** 
    999999     * APIMethod: getViewPortPxFromLonLat 
     1000     * Returns a pixel location given a map location.  This method will return 
     1001     *     fractional pixel values. 
    10001002     *  
    10011003     * Parameters: 
     
    10121014            var extent = this.map.getExtent(); 
    10131015            px = new OpenLayers.Pixel( 
    1014                 Math.round(1/resolution * (lonlat.lon - extent.left)), 
    1015                 Math.round(1/resolution * (extent.top - lonlat.lat)) 
     1016                (1/resolution * (lonlat.lon - extent.left)), 
     1017                (1/resolution * (extent.top - lonlat.lat)) 
    10161018            );     
    10171019        } 
  • trunk/openlayers/lib/OpenLayers/Map.js

    r6828 r6831  
    15941594 
    15951595        if ((originPx != null) && (newPx != null)) { 
    1596             this.layerContainerDiv.style.left = (originPx.x - newPx.x) + "px"; 
    1597             this.layerContainerDiv.style.top  = (originPx.y - newPx.y) + "px"; 
     1596            this.layerContainerDiv.style.left = Math.round(originPx.x - newPx.x) + "px"; 
     1597            this.layerContainerDiv.style.top  = Math.round(originPx.y - newPx.y) + "px"; 
    15981598        } 
    15991599    }, 
     
    20232023    /** 
    20242024     * APIMethod: getPixelFromLonLat 
    2025      *  
    2026      * Parameters: 
    2027      * lonlat - {<OpenLayers.LonLat>} 
     2025     * Returns a pixel location given a map location.  The map location is 
     2026     *     translated to an integer pixel location (in viewport pixel 
     2027     *     coordinates) by the current base layer. 
     2028     *  
     2029     * Parameters: 
     2030     * lonlat - {<OpenLayers.LonLat>} A map location. 
    20282031     *  
    20292032     * Returns:  
    20302033     * {<OpenLayers.Pixel>} An OpenLayers.Pixel corresponding to the  
    2031      *                      <OpenLayers.LonLat> translated into view port  
    2032      *                      pixels by the current base layer. 
     2034     *     <OpenLayers.LonLat> translated into view port pixels by the current 
     2035     *     base layer. 
    20332036     */ 
    20342037    getPixelFromLonLat: function (lonlat) { 
    2035         return this.getViewPortPxFromLonLat(lonlat); 
     2038        var px = this.getViewPortPxFromLonLat(lonlat); 
     2039        px.x = Math.round(px.x); 
     2040        px.y = Math.round(px.y); 
     2041        return px; 
    20362042    }, 
    20372043 
     
    21172123    getLayerPxFromLonLat: function (lonlat) { 
    21182124       //adjust for displacement of layerContainerDiv 
    2119        var px = this.getViewPortPxFromLonLat(lonlat); 
     2125       var px = this.getPixelFromLonLat(lonlat); 
    21202126       return this.getLayerPxFromViewPortPx(px);          
    21212127    },