OpenLayers OpenLayers

Ticket #1302: gridOrigin.patch

File gridOrigin.patch, 2.3 kB (added by pascalou, 8 months ago)

patch on revision 5834

  • lib/OpenLayers/Layer/Grid.js

    old new  
    5959     */ 
    6060    numLoadingTiles: 0, 
    6161 
     62     /**                                                  
     63     * APIProperty: gridOrigin                               
     64     * {LongLat} origin of the grid tiles for all resolution. Usefull for WMSC 
     65     * layers which requested tiles must be stricly aligned to the server grid 
     66     * If not specified : bottom left corner of the map.maxExtent 
     67     */                                                 
     68    gridOrigin: null,  
     69 
    6270    /** 
    6371     * Constructor: OpenLayers.Layer.Grid 
    6472     * Create a new grid layer 
     
    316324        var minCols = Math.ceil(viewSize.w/this.tileSize.w) + 
    317325                      Math.max(1, 2 * this.buffer); 
    318326         
    319         var extent = this.map.getMaxExtent(); 
     327        this.gridOrigin = this.gridOrigin || new OpenLayers.LonLat( 
     328            this.map.getMaxExtent().left, this.map.getMaxExtent().bottom); 
     329 
    320330        var resolution = this.map.getResolution(); 
    321331        var tilelon = resolution * this.tileSize.w; 
    322332        var tilelat = resolution * this.tileSize.h; 
    323333         
    324         var offsetlon = bounds.left - extent.left
     334        var offsetlon = bounds.left - this.gridOrigin.lon
    325335        var tilecol = Math.floor(offsetlon/tilelon) - this.buffer; 
    326336        var tilecolremain = offsetlon/tilelon - tilecol; 
    327337        var tileoffsetx = -tilecolremain * this.tileSize.w; 
    328         var tileoffsetlon = extent.left + tilecol * tilelon; 
     338        var tileoffsetlon = this.gridOrigin.lon + tilecol * tilelon; 
    329339         
    330         var offsetlat = bounds.top - (extent.bottom + tilelat);   
     340        var offsetlat = bounds.top - (this.gridOrigin.lat + tilelat);   
    331341        var tilerow = Math.ceil(offsetlat/tilelat) + this.buffer; 
    332342        var tilerowremain = tilerow - offsetlat/tilelat; 
    333343        var tileoffsety = -tilerowremain * this.tileSize.h; 
    334         var tileoffsetlat = extent.bottom + tilerow * tilelat; 
     344        var tileoffsetlat = this.gridOrigin.lat + tilerow * tilelat; 
    335345         
    336346        tileoffsetx = Math.round(tileoffsetx); // heaven help us 
    337347        tileoffsety = Math.round(tileoffsety);