move properties from layer/XYZ to layer/TileLayer

This commit is contained in:
Éric Lemoine
2012-06-21 12:41:43 +02:00
parent 5da8fc8d49
commit 5f1e53a0c9
4 changed files with 232 additions and 75 deletions

View File

@@ -6,6 +6,169 @@ goog.require('ol.layer.Layer');
* @constructor
* @extends {ol.layer.Layer}
*/
ol.layer.TileLayer = function() {};
ol.layer.TileLayer = function() {
/**
* @protected
* @type {ol.Projection}
*/
this.projection_ = null;
/**
* @private
* @type {ol.Bounds}
*/
this.extent_ = null;
/**
* @protected
* @type {number}
*/
this.tileWidth_ = 256;
/**
* @protected
* @type {number}
*/
this.tileHeight_ = 256;
/**
* @protected
* @type {number|undefined}
*/
this.tileOriginX_ = undefined;
/**
* @protected
* @type {number|undefined}
*/
this.tileOriginY_ = undefined;
/**
* @private
* @type {string}
*/
this.tileOriginCorner_ = 'bl';
/**
* @protected
* @type {Array.<number>}
*/
this.resolutions_ = null;
};
goog.inherits(ol.layer.TileLayer, ol.layer.Layer);
/**
* Get layer extent. Return null if the layer has no extent
* and no projection.
* @return {ol.UnreferencedBounds}
*/
ol.layer.TileLayer.prototype.getExtent = function() {
if (!goog.isNull(this.extent_)) {
return this.extent_;
}
if (!goog.isNull(this.projection_)) {
return this.projection_.getExtent();
}
return null;
};
/**
* Get tile origin.
* @return {Array.<number>}
*/
ol.layer.TileLayer.prototype.getTileOrigin = function() {
if (goog.isDef(this.tileOriginX_) &&
goog.isDef(this.tileOriginY_)) {
return [this.tileOriginX_, this.tileOriginY_];
}
var errmsg;
if (goog.isDef(this.tileOriginCorner_)) {
var extent = this.getExtent();
if (!goog.isNull(extent)) {
var tileOriginX, tileOriginY;
switch (this.tileOriginCorner_) {
case "tl":
tileOriginX = extent.getMinX();
tileOriginY = extent.getMaxY();
break;
case "tr":
tileOriginX = extent.getMaxX();
tileOriginY = extent.getMaxY();
break;
case "bl":
tileOriginX = extent.getMinX();
tileOriginY = extent.getMinY();
break;
case "br":
tileOriginX = extent.getMaxX();
tileOriginY = extent.getMinY();
break;
default:
// FIXME user error
goog.asserts.assert(false);
}
return [tileOriginX, tileOriginY];
}
// FIXME user error
goog.asserts.assert(false);
}
// FIXME user error
goog.asserts.assert(false);
return null;
};
/**
* Set layer projection.
* @param {ol.Projection} projection
*/
ol.layer.TileLayer.prototype.setProjection = function(projection) {
this.projection_ = projection;
};
/**
* Set layer extent.
* @param {ol.Bounds} extent
*/
ol.layer.TileLayer.prototype.setExtent = function(extent) {
this.extent_ = extent;
};
/**
* Set tile width and height.
* @param {number} width
* @param {number} height
*/
ol.layer.TileLayer.prototype.setTileSize = function(width, height) {
this.tileWidth_ = width;
this.tileHeight_ = height;
};
/**
* Set tile origin.
* @param {number} tileOriginX
* @param {number} tileOriginY
*/
ol.layer.TileLayer.prototype.setTileOrigin = function(tileOriginX, tileOriginY) {
this.tileOriginX_ = tileOriginX;
this.tileOriginY_ = tileOriginY;
};
/**
* Set tile origin corner.
* @param {string} tileOriginCorner
*/
ol.layer.TileLayer.prototype.setTileOriginCorner = function(tileOriginCorner) {
this.tileOriginCorner_ = tileOriginCorner;
};
/**
* Set resolutions for the layer.
* @param {Array.<number>} resolutions
*/
ol.layer.TileLayer.prototype.setResolutions = function(resolutions) {
this.resolutions_ = resolutions;
};

View File

@@ -22,41 +22,9 @@ ol.layer.XYZ = function(url) {
*/
this.url_ = url;
/**
* @private
* @type {number}
*/
this.tileWidth_ = 256;
goog.base(this);
/**
* @private
* @type {number}
*/
this.tileHeight_ = 256;
/**
* @private
* @type {number}
*/
this.tileOriginX_ = -20037508.34;
/**
* @private
* @type {number}
*/
this.tileOriginY_ = 20037508.34;
/**
* @private
* @type {ol.Projection}
*/
this.projection_ = new ol.Projection('EPSG:900913');
/**
* @private
* @type {Array.<number>}
*/
this.resolutions_ = [
this.setResolutions([
156543.03390625, 78271.516953125, 39135.7584765625,
19567.87923828125, 9783.939619140625, 4891.9698095703125,
2445.9849047851562, 1222.9924523925781, 611.4962261962891,
@@ -65,48 +33,11 @@ ol.layer.XYZ = function(url) {
4.777314267158508, 2.388657133579254, 1.194328566789627,
0.5971642833948135, 0.29858214169740677, 0.14929107084870338,
0.07464553542435169
];
]);
};
goog.inherits(ol.layer.XYZ, ol.layer.TileLayer);
/**
* Set tile width and height.
* @param {number} width
* @param {number} height
*/
ol.layer.XYZ.prototype.setTileSize = function(width, height) {
this.tileWidth_ = width;
this.tileHeight_ = height;
};
/**
* Set the layer max extent.
* @param {ol.Bounds} maxExtent
*/
ol.layer.XYZ.prototype.setMaxExtent = function(maxExtent) {
this.maxExtent_ = maxExtent;
};
/**
* Set tile origin.
* @param {number} tileOriginX
* @param {number} tileOriginY
*/
ol.layer.XYZ.prototype.setTileOrigin = function(tileOriginX, tileOriginY) {
this.tileOriginX_ = tileOriginX;
this.tileOriginY_ = tileOriginY;
};
/**
* Set resolutions for the layer.
* @param {Array.<number>} resolutions
*/
ol.layer.XYZ.prototype.setResolutions = function(resolutions) {
this.resolutions_ = resolutions;
};
/**
* Get data from the layer. This is the layer's main API function.
* @param {ol.Bounds} bounds
@@ -126,8 +57,9 @@ ol.layer.XYZ.prototype.getData = function(bounds, resolution) {
tileWidth = me.tileWidth_,
tileHeight = me.tileHeight_,
tileOriginX = me.tileOriginX_,
tileOriginY = me.tileOriginY_,
tileOrigin = me.getTileOrigin(),
tileOriginX = tileOrigin[0],
tileOriginY = tileOrigin[1],
tileWidthGeo = tileWidth * resolution,
tileHeightGeo = tileHeight * resolution,