ol.Store should not inherit from ol.Object

This commit is contained in:
Tom Payne
2012-07-14 15:31:36 +02:00
parent a8138cfe17
commit 8c4d408795
2 changed files with 55 additions and 27 deletions
+32 -24
View File
@@ -1,42 +1,44 @@
goog.provide('ol.Store'); goog.provide('ol.Store');
goog.provide('ol.StoreProperty');
goog.require('ol.Extent'); goog.require('ol.Extent');
goog.require('ol.Object');
goog.require('ol.Projection'); goog.require('ol.Projection');
/**
* @enum {string}
*/
ol.StoreProperty = {
ATTRIBUTION: 'attribution',
EXTENT: 'extent',
PROJECTION: 'projection'
};
/** /**
* @constructor * @constructor
* @extends {ol.Object} * @param {ol.Projection} projection Projection.
* @param {ol.Extent=} opt_extent Extent.
* @param {string=} opt_attribution Attribution.
*/ */
ol.Store = function() { ol.Store = function(projection, opt_extent, opt_attribution) {
goog.base(this); /**
* @private
* @type {ol.Projection}
*/
this.projection_ = projection;
this.setExtent(null); /**
this.setProjection(null); * @private
* @type {ol.Extent}
*/
this.extent_ = goog.isDef(opt_extent) ? opt_extent : projection.getExtent();
/**
* @private
* @type {string|undefined}
*/
this.attribution_ = opt_attribution;
}; };
goog.inherits(ol.Store, ol.Object);
/** /**
* @return {string|undefined} Attribution. * @return {string|undefined} Attribution.
*/ */
ol.Store.prototype.getAttribution = function() { ol.Store.prototype.getAttribution = function() {
return /** @type {string} */ (this.get(ol.StoreProperty.ATTRIBUTION)); return this.attribution_;
}; };
@@ -44,7 +46,7 @@ ol.Store.prototype.getAttribution = function() {
* @return {ol.Extent} Extent. * @return {ol.Extent} Extent.
*/ */
ol.Store.prototype.getExtent = function() { ol.Store.prototype.getExtent = function() {
return /** @type {ol.Extent} */ (this.get(ol.StoreProperty.EXTENT)); return this.extent_;
}; };
@@ -52,15 +54,21 @@ ol.Store.prototype.getExtent = function() {
* @return {ol.Projection} Projection. * @return {ol.Projection} Projection.
*/ */
ol.Store.prototype.getProjection = function() { ol.Store.prototype.getProjection = function() {
return /** @type {ol.Projection} */ (this.get(ol.StoreProperty.PROJECTION)); return this.projection_;
}; };
/**
* @return {Array.<number>|undefined} Resolutions.
*/
ol.Store.prototype.getResolutions = goog.abstractMethod;
/** /**
* @param {string|undefined} attribution Attribution. * @param {string|undefined} attribution Attribution.
*/ */
ol.Store.prototype.setAttribution = function(attribution) { ol.Store.prototype.setAttribution = function(attribution) {
this.set(ol.StoreProperty.ATTRIBUTION, attribution); this.attribution_ = attribution;
}; };
@@ -68,7 +76,7 @@ ol.Store.prototype.setAttribution = function(attribution) {
* @param {ol.Extent} extent Extent. * @param {ol.Extent} extent Extent.
*/ */
ol.Store.prototype.setExtent = function(extent) { ol.Store.prototype.setExtent = function(extent) {
this.set(ol.StoreProperty.EXTENT, extent); this.extent_ = extent;
}; };
@@ -76,5 +84,5 @@ ol.Store.prototype.setExtent = function(extent) {
* @param {ol.Projection} projection Projetion. * @param {ol.Projection} projection Projetion.
*/ */
ol.Store.prototype.setProjection = function(projection) { ol.Store.prototype.setProjection = function(projection) {
this.set(ol.StoreProperty.PROJECTION, projection); this.projection_ = projection;
}; };
+23 -3
View File
@@ -11,13 +11,17 @@ goog.require('ol.TileUrlFunctionType');
/** /**
* @constructor * @constructor
* @extends {ol.Store} * @extends {ol.Store}
* @param {ol.Projection} projection Projection.
* @param {ol.TileGrid} tileGrid Tile grid. * @param {ol.TileGrid} tileGrid Tile grid.
* @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL. * @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL.
* @param {ol.Extent=} opt_extent Extent.
* @param {string=} opt_attribution Attribution.
* @param {string=} opt_crossOrigin Cross origin. * @param {string=} opt_crossOrigin Cross origin.
*/ */
ol.TileStore = function(tileGrid, tileUrlFunction, opt_crossOrigin) { ol.TileStore = function(projection, tileGrid, tileUrlFunction, opt_extent,
opt_attribution, opt_crossOrigin) {
goog.base(this); goog.base(this, projection, opt_extent, opt_attribution);
/** /**
* @private * @private
@@ -54,19 +58,35 @@ goog.inherits(ol.TileStore, ol.Store);
*/ */
ol.TileStore.createOpenStreetMap = function() { ol.TileStore.createOpenStreetMap = function() {
var projection = ol.Projection.createFromCode('EPSG:3857');
var tileGrid = ol.TileGrid.createOpenStreetMap(18); var tileGrid = ol.TileGrid.createOpenStreetMap(18);
var tileUrlFunction = ol.TileUrlFunction.createFromTemplates([ var tileUrlFunction = ol.TileUrlFunction.createFromTemplates([
'http://a.tile.openstreetmap.org/{z}/{x}/{y}.png', 'http://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
'http://b.tile.openstreetmap.org/{z}/{x}/{y}.png', 'http://b.tile.openstreetmap.org/{z}/{x}/{y}.png',
'http://c.tile.openstreetmap.org/{z}/{x}/{y}.png' 'http://c.tile.openstreetmap.org/{z}/{x}/{y}.png'
]); ]);
var extent = projection.getExtent();
var attribution =
'&copy; ' +
'<a href="http://www.openstreetmap.org">OpenStreetMap</a> ' +
'contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA</a>';
var crossOrigin = ''; var crossOrigin = '';
return new ol.TileStore(tileGrid, tileUrlFunction, crossOrigin); return new ol.TileStore(
projection, tileGrid, tileUrlFunction, extent, attribution, crossOrigin);
}; };
/**
* @inheritDoc
*/
ol.TileStore.prototype.getResolutions = function() {
return this.tileGrid_.getResolutions();
};
/** /**
* @param {ol.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {ol.Tile} Tile. * @return {ol.Tile} Tile.