Calculating rowSign only once

This commit is contained in:
ahocevar
2012-10-12 16:16:44 +02:00
parent 0eb8949ad2
commit a0acf1e550
+12 -3
View File
@@ -276,6 +276,13 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
* startrow * startrow
*/ */
gridLayout: null, gridLayout: null,
/**
* Property: rowSign
* {Number} 1 for grids starting at the top, -1 for grids starting at the
* bottom. This is used for several grid index and offset calculations.
*/
rowSign: null,
/** /**
* Constructor: OpenLayers.Layer.Grid * Constructor: OpenLayers.Layer.Grid
@@ -308,6 +315,8 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
this.moveTimerId = null; this.moveTimerId = null;
}, this); }, this);
} }
this.rowSign = this.tileOriginCorner.substr(0, 1) === "t" ? 1 : -1;
}, },
/** /**
@@ -884,7 +893,7 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
var offsetlon = bounds.left - origin.lon; var offsetlon = bounds.left - origin.lon;
var tilecol = Math.floor(offsetlon/tilelon) - this.buffer; var tilecol = Math.floor(offsetlon/tilelon) - this.buffer;
var rowSign = this.tileOriginCorner.substr(0, 1) === "t" ? 1 : -1; var rowSign = this.rowSign;
var offsetlat = rowSign * (origin.lat - bounds.top + tilelat); var offsetlat = rowSign * (origin.lat - bounds.top + tilelat);
var tilerow = Math[~rowSign ? 'floor' : 'ceil'](offsetlat/tilelat) - this.buffer * rowSign; var tilerow = Math[~rowSign ? 'floor' : 'ceil'](offsetlat/tilelat) - this.buffer * rowSign;
@@ -939,7 +948,7 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
var tilelat = tileLayout.tilelat; var tilelat = tileLayout.tilelat;
var startcol = tileLayout.startcol; var startcol = tileLayout.startcol;
var startrow = tileLayout.startrow; var startrow = tileLayout.startrow;
var rowSign = this.tileOriginCorner.substr(0, 1) === "t" ? 1 : -1; var rowSign = this.rowSign;
return new OpenLayers.Bounds( return new OpenLayers.Bounds(
origin.lon + (startcol + col) * tilelon, origin.lon + (startcol + col) * tilelon,
origin.lat - (startrow + row * rowSign) * tilelat * rowSign, origin.lat - (startrow + row * rowSign) * tilelat * rowSign,
@@ -1207,7 +1216,7 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
var grid = this.grid; var grid = this.grid;
var rowIndex = prepend ? 0 : (grid.length - 1); var rowIndex = prepend ? 0 : (grid.length - 1);
var sign = prepend ? -1 : 1; var sign = prepend ? -1 : 1;
var rowSign = this.tileOriginCorner.substr(0, 1) === "t" ? 1 : -1; var rowSign = this.rowSign;
var tileLayout = this.gridLayout; var tileLayout = this.gridLayout;
tileLayout.startrow += sign * rowSign; tileLayout.startrow += sign * rowSign;