OpenLayers OpenLayers

Ticket #1503: odd.patch

File odd.patch, 2.8 kB (added by tschaub, 8 months ago)

proper panning for odd-sized viewports

  • lib/OpenLayers/Map.js

    old new  
    15931593        var newPx = this.getViewPortPxFromLonLat(lonlat); 
    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    }, 
    16001600 
     
    20222022 
    20232023    /** 
    20242024     * APIMethod: getPixelFromLonLat 
     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. 
    20252028     *  
    20262029     * Parameters: 
    2027      * lonlat - {<OpenLayers.LonLat>} 
     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 
    20382044 
     
    21162122     */ 
    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    }, 
    21222128 
  • lib/OpenLayers/Layer.js

    old new  
    997997 
    998998    /** 
    999999     * APIMethod: getViewPortPxFromLonLat 
     1000     * Returns a pixel location given a map location.  This method will return 
     1001     *     fractional pixel values. 
    10001002     *  
    10011003     * Parameters: 
    10021004     * lonlat - {<OpenLayers.LonLat>} 
     
    10111013            var resolution = this.map.getResolution(); 
    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        } 
    10181020        return px;