move properties from layer/XYZ to layer/TileLayer
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
<script type="text/javascript" src="spec/ol/TileSet.test.js"></script>
|
||||
<script type="text/javascript" src="spec/ol/geom/Point.test.js"></script>
|
||||
<script type="text/javascript" src="spec/ol/geom/MultiPoint.test.js"></script>
|
||||
<script type="text/javascript" src="spec/ol/layer/TileLayer.test.js"></script>
|
||||
<script type="text/javascript" src="spec/ol/layer/XYZ.test.js"></script>
|
||||
<script type="text/javascript" src="spec/ol/Feature.test.js"></script>
|
||||
|
||||
|
||||
61
test/spec/ol/layer/TileLayer.test.js
Normal file
61
test/spec/ol/layer/TileLayer.test.js
Normal file
@@ -0,0 +1,61 @@
|
||||
describe('ol.layer.TileLayer', function() {
|
||||
|
||||
describe('create a tile layer', function() {
|
||||
|
||||
it('returns an ol.layer.TileLayer instance', function() {
|
||||
var layer = new ol.layer.TileLayer();
|
||||
expect(layer instanceof ol.layer.TileLayer).toBe(true);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('get tile origin', function() {
|
||||
var layer;
|
||||
|
||||
beforeEach(function() {
|
||||
layer = new ol.layer.TileLayer();
|
||||
});
|
||||
|
||||
describe('with tileOriginX and tileOriginY set', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
layer.setTileOrigin(1, 2);
|
||||
});
|
||||
|
||||
it('returns the expected origin', function() {
|
||||
var origin = layer.getTileOrigin();
|
||||
expect(origin).toEqual([1, 2]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('with extent set', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
layer.setExtent(new ol.Bounds(-180, -90, 180, 90));
|
||||
});
|
||||
|
||||
it('returns the expected origin', function() {
|
||||
var origin = layer.getTileOrigin();
|
||||
expect(origin).toEqual([-180, -90]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('with extent and tileOriginCorner set', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
layer.setExtent(new ol.Bounds(-180, -90, 180, 90));
|
||||
layer.setTileOriginCorner('tr');
|
||||
});
|
||||
|
||||
it('returns the expected origin', function() {
|
||||
var origin = layer.getTileOrigin();
|
||||
expect(origin).toEqual([180, 90]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user