diff --git a/skeleton.js b/skeleton.js index 87fb13c185..22b8a04317 100644 --- a/skeleton.js +++ b/skeleton.js @@ -2,7 +2,7 @@ goog.require('goog.object'); goog.require('ol.Coordinate'); goog.require('ol.RendererHint'); goog.require('ol.createMap'); -goog.require('ol.tilelayer.createOpenStreetMap'); +goog.require('ol.layer.OpenStreetMap'); var twoMaps = true; @@ -12,7 +12,7 @@ var layer; target = /** @type {!HTMLDivElement} */ document.getElementById('map1'); map = map1 = ol.createMap(target, undefined, ol.RendererHint.DOM); -layer = ol.tilelayer.createOpenStreetMap({ +layer = new ol.layer.OpenStreetMap({ 'opacity': 0.9 }); map.getLayers().push(layer); diff --git a/src/ol/base/store.js b/src/ol/base/store.js index a2f2902a70..44bb41b179 100644 --- a/src/ol/base/store.js +++ b/src/ol/base/store.js @@ -9,9 +9,8 @@ goog.require('ol.Projection'); * @constructor * @param {ol.Projection} projection Projection. * @param {ol.Extent=} opt_extent Extent. - * @param {string=} opt_attribution Attribution. */ -ol.Store = function(projection, opt_extent, opt_attribution) { +ol.Store = function(projection, opt_extent) { /** * @private @@ -25,20 +24,16 @@ ol.Store = function(projection, opt_extent, opt_attribution) { */ this.extent_ = goog.isDef(opt_extent) ? opt_extent : projection.getExtent(); - /** - * @private - * @type {string|undefined} - */ - this.attribution_ = opt_attribution; - }; /** + * @param {ol.Extent} extent Extent. + * @param {number} resolution Resolution. * @return {string|undefined} Attribution. */ -ol.Store.prototype.getAttribution = function() { - return this.attribution_; +ol.Store.prototype.getAttribution = function(extent, resolution) { + return undefined; }; diff --git a/src/ol/tile/openstreetmap.js b/src/ol/tile/openstreetmap.js index b4397a0743..17cc4bd427 100644 --- a/src/ol/tile/openstreetmap.js +++ b/src/ol/tile/openstreetmap.js @@ -1,25 +1,45 @@ -goog.provide('ol.tilelayer.createOpenStreetMap'); +goog.provide('ol.layer.OpenStreetMap'); +goog.provide('ol.store.OpenStreetMap'); -goog.require('ol.Layer'); goog.require('ol.TileLayer'); -goog.require('ol.tilestore.createXYZ'); +goog.require('ol.TileUrlFunction'); +goog.require('ol.tilestore.XYZ'); + /** + * @constructor + * @extends {ol.TileLayer} * @param {Object.=} opt_values Values. - * @return {ol.Layer} Layer. */ -ol.tilelayer.createOpenStreetMap = function(opt_values) { - var store = ol.tilestore.createXYZ( - 18, - [ - 'http://a.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' - ], - '© ' + - 'OpenStreetMap ' + - 'contributors, ' + - 'CC BY-SA'); - return new ol.TileLayer(store, opt_values); +ol.layer.OpenStreetMap = function(opt_values) { + var tileStore = new ol.store.OpenStreetMap(); + goog.base(this, tileStore, opt_values); +}; +goog.inherits(ol.layer.OpenStreetMap, ol.TileLayer); + + + +/** + * @constructor + * @extends {ol.tilestore.XYZ} + */ +ol.store.OpenStreetMap = function() { + goog.base(this, 18, ol.TileUrlFunction.createFromTemplates([ + 'http://a.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' + ])); +}; +goog.inherits(ol.store.OpenStreetMap, ol.tilestore.XYZ); + + +/** + * @inheritDoc + */ +ol.store.OpenStreetMap.prototype.getAttribution = + function(extent, resolution) { + return '© OpenStreetMap ' + + 'contributors, ' + + 'CC BY-SA'; }; diff --git a/src/ol/tile/tilestore.js b/src/ol/tile/tilestore.js index b4f7a58c3d..cf0a7108da 100644 --- a/src/ol/tile/tilestore.js +++ b/src/ol/tile/tilestore.js @@ -15,13 +15,12 @@ goog.require('ol.TileUrlFunctionType'); * @param {ol.TileGrid} tileGrid Tile grid. * @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL. * @param {ol.Extent=} opt_extent Extent. - * @param {string=} opt_attribution Attribution. * @param {?string=} opt_crossOrigin Cross origin. */ -ol.TileStore = function(projection, tileGrid, tileUrlFunction, opt_extent, - opt_attribution, opt_crossOrigin) { +ol.TileStore = function( + projection, tileGrid, tileUrlFunction, opt_extent, opt_crossOrigin) { - goog.base(this, projection, opt_extent, opt_attribution); + goog.base(this, projection, opt_extent); /** * @private diff --git a/src/ol/tile/xyz.js b/src/ol/tile/xyz.js index 92f6f70f34..72c631d219 100644 --- a/src/ol/tile/xyz.js +++ b/src/ol/tile/xyz.js @@ -1,6 +1,6 @@ -goog.provide('ol.tilegrid.createXYZ'); -goog.provide('ol.tilelayer.createXYZ'); -goog.provide('ol.tilestore.createXYZ'); +goog.provide('ol.layer.XYZ'); +goog.provide('ol.tilegrid.XYZ'); +goog.provide('ol.tilestore.XYZ'); goog.require('goog.math'); goog.require('ol.Coordinate'); @@ -14,11 +14,13 @@ goog.require('ol.TileStore'); goog.require('ol.TileUrlFunction'); + /** + * @constructor + * @extends {ol.TileGrid} * @param {number} maxZoom Maximum zoom. - * @return {ol.TileGrid} Tile grid. */ -ol.tilegrid.createXYZ = function(maxZoom) { +ol.tilegrid.XYZ = function(maxZoom) { var resolutions = new Array(maxZoom + 1); var z; @@ -31,40 +33,44 @@ ol.tilegrid.createXYZ = function(maxZoom) { -ol.Projection.EPSG_3857_HALF_SIZE, ol.Projection.EPSG_3857_HALF_SIZE); var tileSize = new ol.Size(256, 256); - return new ol.TileGrid(resolutions, extent, origin, tileSize); + goog.base(this, resolutions, extent, origin, tileSize); }; +goog.inherits(ol.tilegrid.XYZ, ol.TileGrid); + /** + * @constructor + * @extends {ol.TileLayer} * @param {number} maxZoom Maximum zoom. - * @param {Array.} templates Templates. - * @param {string=} opt_attribution Attribution. + * @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL function. * @param {string=} opt_crossOrigin Cross origin. * @param {Object.=} opt_values Values. - * @return {ol.Layer} Layer. */ -ol.tilelayer.createXYZ = - function(maxZoom, templates, opt_attribution, opt_crossOrigin, opt_values) { - var store = ol.tilestore.createXYZ( - maxZoom, templates, opt_attribution, opt_crossOrigin); - return new ol.TileLayer(store, opt_values); +ol.layer.XYZ = function(maxZoom, tileUrlFunction, opt_crossOrigin, opt_values) { + var tileStore = new ol.tilestore.XYZ( + maxZoom, tileUrlFunction, opt_crossOrigin); + goog.base(this, tileStore, opt_values); }; +goog.inherits(ol.layer.XYZ, ol.TileLayer); + /** + * @constructor + * @extends {ol.TileStore} * @param {number} maxZoom Maximum zoom. - * @param {Array.} templates Templates. + * @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL function. * @param {string=} opt_attribution Attribution. * @param {string=} opt_crossOrigin Cross origin. - * @return {ol.TileStore} Tile store. */ -ol.tilestore.createXYZ = - function(maxZoom, templates, opt_attribution, opt_crossOrigin) { +ol.tilestore.XYZ = + function(maxZoom, tileUrlFunction, opt_attribution, opt_crossOrigin) { var projection = ol.Projection.getFromCode('EPSG:3857'); - var tileGrid = ol.tilegrid.createXYZ(maxZoom); - var tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform( + var tileGrid = new ol.tilegrid.XYZ(maxZoom); + var tileUrlFunction2 = ol.TileUrlFunction.withTileCoordTransform( function(tileCoord) { var n = 1 << tileCoord.z; var y = -tileCoord.y - 1; @@ -75,10 +81,11 @@ ol.tilestore.createXYZ = return new ol.TileCoord(tileCoord.z, x, y); } }, - ol.TileUrlFunction.createFromTemplates(templates)); + tileUrlFunction); var extent = projection.getExtent(); - return new ol.TileStore(projection, tileGrid, tileUrlFunction, extent, - opt_attribution, opt_crossOrigin); + goog.base( + this, projection, tileGrid, tileUrlFunction2, extent, opt_crossOrigin); }; +goog.inherits(ol.tilestore.XYZ, ol.TileStore);