Don't derive ol.TileRange from ol.Rectangle
This commit is contained in:
@@ -228,7 +228,7 @@ ol.tilegrid.TileGrid.prototype.getTileRangeForExtentAndResolution =
|
||||
this.getTileCoordForXYAndResolution_(
|
||||
extent.maxX, extent.maxY, resolution, true, tileCoord);
|
||||
return ol.TileRange.createOrUpdate(
|
||||
minX, minY, tileCoord.x, tileCoord.y, opt_tileRange);
|
||||
minX, tileCoord.x, minY, tileCoord.y, opt_tileRange);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -46,8 +46,8 @@ ol.tilegrid.XYZ.prototype.getTileCoordChildTileRange =
|
||||
function(tileCoord, opt_tileRange) {
|
||||
if (tileCoord.z < this.maxZoom_) {
|
||||
return ol.TileRange.createOrUpdate(
|
||||
tileCoord.x << 1, tileCoord.y << 1,
|
||||
tileCoord.x + 1 << 1, tileCoord.y + 1 << 1,
|
||||
tileCoord.x << 1, tileCoord.x + 1 << 1,
|
||||
tileCoord.y << 1, tileCoord.y + 1 << 1,
|
||||
opt_tileRange);
|
||||
} else {
|
||||
return null;
|
||||
@@ -61,7 +61,7 @@ ol.tilegrid.XYZ.prototype.getTileCoordChildTileRange =
|
||||
ol.tilegrid.XYZ.prototype.forEachTileCoordParentTileRange =
|
||||
function(tileCoord, callback, opt_obj, opt_tileRange) {
|
||||
var tileRange = ol.TileRange.createOrUpdate(
|
||||
0, 0, tileCoord.x, tileCoord.y, opt_tileRange);
|
||||
0, tileCoord.x, 0, tileCoord.y, opt_tileRange);
|
||||
var z;
|
||||
for (z = tileCoord.z - 1; z >= 0; --z) {
|
||||
tileRange.minX = tileRange.maxX >>= 1;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
goog.provide('ol.TileRange');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('ol.Rectangle');
|
||||
goog.require('ol.Size');
|
||||
goog.require('ol.TileCoord');
|
||||
|
||||
|
||||
@@ -11,13 +11,12 @@ goog.require('ol.TileCoord');
|
||||
* by its min/max tile coordinates and is inclusive of coordinates.
|
||||
*
|
||||
* @constructor
|
||||
* @extends {ol.Rectangle}
|
||||
* @param {number} minX Minimum X.
|
||||
* @param {number} minY Minimum Y.
|
||||
* @param {number} maxX Maximum X.
|
||||
* @param {number} minY Minimum Y.
|
||||
* @param {number} maxY Maximum Y.
|
||||
*/
|
||||
ol.TileRange = function(minX, minY, maxX, maxY) {
|
||||
ol.TileRange = function(minX, maxX, minY, maxY) {
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
@@ -27,12 +26,12 @@ ol.TileRange = function(minX, minY, maxX, maxY) {
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.minY = minY;
|
||||
this.maxX = maxX;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.maxX = maxX;
|
||||
this.minY = minY;
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
@@ -40,7 +39,6 @@ ol.TileRange = function(minX, minY, maxX, maxY) {
|
||||
this.maxY = maxY;
|
||||
|
||||
};
|
||||
goog.inherits(ol.TileRange, ol.Rectangle);
|
||||
|
||||
|
||||
/**
|
||||
@@ -49,15 +47,15 @@ goog.inherits(ol.TileRange, ol.Rectangle);
|
||||
*/
|
||||
ol.TileRange.boundingTileRange = function(var_args) {
|
||||
var tileCoord0 = arguments[0];
|
||||
var tileRange = new ol.TileRange(tileCoord0.x, tileCoord0.y,
|
||||
tileCoord0.x, tileCoord0.y);
|
||||
var tileRange = new ol.TileRange(tileCoord0.x, tileCoord0.x,
|
||||
tileCoord0.y, tileCoord0.y);
|
||||
var i, tileCoord;
|
||||
for (i = 1; i < arguments.length; ++i) {
|
||||
tileCoord = arguments[i];
|
||||
goog.asserts.assert(tileCoord.z == tileCoord0.z);
|
||||
tileRange.minX = Math.min(tileRange.minX, tileCoord.x);
|
||||
tileRange.minY = Math.min(tileRange.minY, tileCoord.y);
|
||||
tileRange.maxX = Math.max(tileRange.maxX, tileCoord.x);
|
||||
tileRange.minY = Math.min(tileRange.minY, tileCoord.y);
|
||||
tileRange.maxY = Math.max(tileRange.maxY, tileCoord.y);
|
||||
}
|
||||
return tileRange;
|
||||
@@ -66,21 +64,21 @@ ol.TileRange.boundingTileRange = function(var_args) {
|
||||
|
||||
/**
|
||||
* @param {number} minX Minimum X.
|
||||
* @param {number} minY Minimum Y.
|
||||
* @param {number} maxX Maximum X.
|
||||
* @param {number} minY Minimum Y.
|
||||
* @param {number} maxY Maximum Y.
|
||||
* @param {ol.TileRange|undefined} tileRange TileRange.
|
||||
* @return {ol.TileRange} Tile range.
|
||||
*/
|
||||
ol.TileRange.createOrUpdate = function(minX, minY, maxX, maxY, tileRange) {
|
||||
ol.TileRange.createOrUpdate = function(minX, maxX, minY, maxY, tileRange) {
|
||||
if (goog.isDef(tileRange)) {
|
||||
tileRange.minX = minX;
|
||||
tileRange.minY = minY;
|
||||
tileRange.maxX = maxX;
|
||||
tileRange.minY = minY;
|
||||
tileRange.maxY = maxY;
|
||||
return tileRange;
|
||||
} else {
|
||||
return new ol.TileRange(minX, minY, maxX, maxY);
|
||||
return new ol.TileRange(minX, maxX, minY, maxY);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -106,7 +104,35 @@ ol.TileRange.prototype.containsTileRange = function(tileRange) {
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* @param {ol.TileRange} tileRange Tile range.
|
||||
* @return {boolean} Equals.
|
||||
*/
|
||||
ol.TileRange.prototype.equals = function(tileRange) {
|
||||
return this.minX == tileRange.minX && this.minY == tileRange.minY &&
|
||||
this.maxX == tileRange.maxX && this.maxY == tileRange.maxY;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.TileRange} tileRange Tile range.
|
||||
*/
|
||||
ol.TileRange.prototype.extend = function(tileRange) {
|
||||
if (tileRange.minX < this.minX) {
|
||||
this.minX = tileRange.minX;
|
||||
}
|
||||
if (tileRange.maxX > this.maxX) {
|
||||
this.maxX = tileRange.maxX;
|
||||
}
|
||||
if (tileRange.minY < this.minY) {
|
||||
this.minY = tileRange.minY;
|
||||
}
|
||||
if (tileRange.maxY > this.maxY) {
|
||||
this.maxY = tileRange.maxY;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {number} Height.
|
||||
*/
|
||||
ol.TileRange.prototype.getHeight = function() {
|
||||
@@ -115,9 +141,28 @@ ol.TileRange.prototype.getHeight = function() {
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
* @return {ol.Size} Size.
|
||||
*/
|
||||
ol.TileRange.prototype.getSize = function() {
|
||||
return new ol.Size(this.getWidth(), this.getHeight());
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @return {number} Width.
|
||||
*/
|
||||
ol.TileRange.prototype.getWidth = function() {
|
||||
return this.maxX - this.minX + 1;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {ol.TileRange} tileRange Tile range.
|
||||
* @return {boolean} Intersects.
|
||||
*/
|
||||
ol.TileRange.prototype.intersects = function(tileRange) {
|
||||
return this.minX <= tileRange.maxX &&
|
||||
this.maxX >= tileRange.minX &&
|
||||
this.minY <= tileRange.maxY &&
|
||||
this.maxY >= tileRange.minY;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user