diff --git a/src/ol/source/stamen.js b/src/ol/source/stamen.js index c1640f0dfc..59a1bbc319 100644 --- a/src/ol/source/stamen.js +++ b/src/ol/source/stamen.js @@ -6,10 +6,64 @@ goog.require('ol.source.OSM'); goog.require('ol.source.XYZ'); +/** + * @classdesc + * Layer source for the Stamen tile server. + * + * @constructor + * @extends {ol.source.XYZ} + * @param {olx.source.StamenOptions} options Stamen options. + * @api stable + */ +ol.source.Stamen = function(options) { + + var i = options.layer.indexOf('-'); + var provider = i == -1 ? options.layer : options.layer.slice(0, i); + ol.DEBUG && console.assert(provider in ol.source.Stamen.ProviderConfig, + 'known provider configured'); + var providerConfig = ol.source.Stamen.ProviderConfig[provider]; + + ol.DEBUG && console.assert(options.layer in ol.source.Stamen.LayerConfig, + 'known layer configured'); + var layerConfig = ol.source.Stamen.LayerConfig[options.layer]; + + var url = options.url !== undefined ? options.url : + 'https://stamen-tiles-{a-d}.a.ssl.fastly.net/' + options.layer + + '/{z}/{x}/{y}.' + layerConfig.extension; + + ol.source.XYZ.call(this, { + attributions: ol.source.Stamen.ATTRIBUTIONS, + cacheSize: options.cacheSize, + crossOrigin: 'anonymous', + maxZoom: options.maxZoom != undefined ? options.maxZoom : providerConfig.maxZoom, + minZoom: options.minZoom != undefined ? options.minZoom : providerConfig.minZoom, + opaque: layerConfig.opaque, + reprojectionErrorThreshold: options.reprojectionErrorThreshold, + tileLoadFunction: options.tileLoadFunction, + url: url + }); + +}; +ol.inherits(ol.source.Stamen, ol.source.XYZ); + + +/** + * @const + * @type {Array.} + */ +ol.source.Stamen.ATTRIBUTIONS = [ + new ol.Attribution({ + html: 'Map tiles by Stamen Design, ' + + 'under CC BY' + + ' 3.0.' + }), + ol.source.OSM.ATTRIBUTION +]; + /** * @type {Object.} */ -ol.source.StamenLayerConfig = { +ol.source.Stamen.LayerConfig = { 'terrain': { extension: 'jpg', opaque: true @@ -56,11 +110,10 @@ ol.source.StamenLayerConfig = { } }; - /** * @type {Object.} */ -ol.source.StamenProviderConfig = { +ol.source.Stamen.ProviderConfig = { 'terrain': { minZoom: 4, maxZoom: 18 @@ -74,58 +127,3 @@ ol.source.StamenProviderConfig = { maxZoom: 16 } }; - - -/** - * @classdesc - * Layer source for the Stamen tile server. - * - * @constructor - * @extends {ol.source.XYZ} - * @param {olx.source.StamenOptions} options Stamen options. - * @api stable - */ -ol.source.Stamen = function(options) { - - var i = options.layer.indexOf('-'); - var provider = i == -1 ? options.layer : options.layer.slice(0, i); - ol.DEBUG && console.assert(provider in ol.source.StamenProviderConfig, - 'known provider configured'); - var providerConfig = ol.source.StamenProviderConfig[provider]; - - ol.DEBUG && console.assert(options.layer in ol.source.StamenLayerConfig, - 'known layer configured'); - var layerConfig = ol.source.StamenLayerConfig[options.layer]; - - var url = options.url !== undefined ? options.url : - 'https://stamen-tiles-{a-d}.a.ssl.fastly.net/' + options.layer + - '/{z}/{x}/{y}.' + layerConfig.extension; - - ol.source.XYZ.call(this, { - attributions: ol.source.Stamen.ATTRIBUTIONS, - cacheSize: options.cacheSize, - crossOrigin: 'anonymous', - maxZoom: options.maxZoom != undefined ? options.maxZoom : providerConfig.maxZoom, - minZoom: options.minZoom != undefined ? options.minZoom : providerConfig.minZoom, - opaque: layerConfig.opaque, - reprojectionErrorThreshold: options.reprojectionErrorThreshold, - tileLoadFunction: options.tileLoadFunction, - url: url - }); - -}; -ol.inherits(ol.source.Stamen, ol.source.XYZ); - - -/** - * @const - * @type {Array.} - */ -ol.source.Stamen.ATTRIBUTIONS = [ - new ol.Attribution({ - html: 'Map tiles by Stamen Design, ' + - 'under CC BY' + - ' 3.0.' - }), - ol.source.OSM.ATTRIBUTION -];