From 6d6188ea791b7d6033f9e0c2aeae9cccf004199d Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Tue, 5 Mar 2013 00:23:09 +0100 Subject: [PATCH] Correct Stamen source --- src/objectliterals.exports | 7 +- src/ol/source/stamen.exports | 20 ------ src/ol/source/stamensource.js | 132 ++++++++++++++++++++-------------- 3 files changed, 82 insertions(+), 77 deletions(-) diff --git a/src/objectliterals.exports b/src/objectliterals.exports index 3f0a1e984d..8483e655bf 100644 --- a/src/objectliterals.exports +++ b/src/objectliterals.exports @@ -114,8 +114,11 @@ @exportObjectLiteralProperty ol.source.SingleImageWMSOptions.version string|undefined @exportObjectLiteral ol.source.StamenOptions -@exportObjectLiteralProperty ol.source.StamenOptions.flavor string|undefined -@exportObjectLiteralProperty ol.source.StamenOptions.provider string +@exportObjectLiteralProperty ol.source.StamenOptions.layer string +@exportObjectLiteralProperty ol.source.StamenOptions.minZoom number|undefined +@exportObjectLiteralProperty ol.source.StamenOptions.maxZoom number|undefined +@exportObjectLiteralProperty ol.source.StamenOptions.opaque boolean|undefined +@exportObjectLiteralProperty ol.source.StamenOptions.url string|undefined @exportObjectLiteral ol.source.StaticImageOptions @exportObjectLiteralProperty ol.source.StaticImageOptions.attributions Array.|undefined diff --git a/src/ol/source/stamen.exports b/src/ol/source/stamen.exports index 40b2c8b0e7..697330485e 100644 --- a/src/ol/source/stamen.exports +++ b/src/ol/source/stamen.exports @@ -1,21 +1 @@ @exportSymbol ol.source.Stamen - -@exportSymbol ol.source.StamenFlavor -@exportProperty ol.source.StamenFlavor.TERRAIN_BACKGROUND -@exportProperty ol.source.StamenFlavor.TERRAIN_LABELS -@exportProperty ol.source.StamenFlavor.TERRAIN_LINES -@exportProperty ol.source.StamenFlavor.TONER_2010 -@exportProperty ol.source.StamenFlavor.TONER_2011 -@exportProperty ol.source.StamenFlavor.TONER_2011_LABELS -@exportProperty ol.source.StamenFlavor.TONER_2011_LINES -@exportProperty ol.source.StamenFlavor.TONER_2011_LITE -@exportProperty ol.source.StamenFlavor.TONER_BACKGROUND -@exportProperty ol.source.StamenFlavor.TONER_HYBRID -@exportProperty ol.source.StamenFlavor.TONER_LABELS -@exportProperty ol.source.StamenFlavor.TONER_LINES -@exportProperty ol.source.StamenFlavor.TONER_LITE - -@exportSymbol ol.source.StamenProvider -@exportProperty ol.source.StamenProvider.TERRAIN -@exportProperty ol.source.StamenProvider.TONER -@exportProperty ol.source.StamenProvider.WATERCOLOR diff --git a/src/ol/source/stamensource.js b/src/ol/source/stamensource.js index 90355bf1e5..6ea87b6ab4 100644 --- a/src/ol/source/stamensource.js +++ b/src/ol/source/stamensource.js @@ -1,61 +1,76 @@ -// FIXME Configure minZoom when supported by TileGrid - goog.provide('ol.source.Stamen'); -goog.provide('ol.source.StamenFlavor'); -goog.provide('ol.source.StamenProvider'); goog.require('ol.Attribution'); goog.require('ol.source.XYZ'); /** - * @enum {string} + * @type {Object.} */ -ol.source.StamenFlavor = { - TERRAIN_BACKGROUND: 'background', - TERRAIN_LABELS: 'labels', - TERRAIN_LINES: 'lines', - TONER_2010: '2010', - TONER_2011: '2011', - TONER_2011_LABELS: '2011-labels', - TONER_2011_LINES: '2011-lines', - TONER_2011_LITE: '2011-lite', - TONER_BACKGROUND: 'background', - TONER_HYBRID: 'hybrid', - TONER_LABELS: 'labels', - TONER_LINES: 'lines', - TONER_LITE: 'lite' +ol.source.StamenLayerConfig = { + 'terrain': { + extension: 'jpg', + opaque: true + }, + 'terrain-background': { + extension: 'jpg', + opaque: true + }, + 'terrain-labels': { + extension: 'png', + opaque: false + }, + 'terrain-lines': { + extension: 'png', + opaque: false + }, + 'toner-background': { + extension: 'png', + opaque: true + }, + 'toner': { + extension: 'png', + opaque: true + }, + 'toner-hybrid': { + extension: 'png', + opaque: false + }, + 'toner-labels': { + extension: 'png', + opaque: false + }, + 'toner-lines': { + extension: 'png', + opaque: false + }, + 'toner-lite': { + extension: 'png', + opaque: true + }, + 'watercolor': { + extension: 'jpg', + opaque: true + } }; /** - * @enum {string} + * @type {Object.} */ -ol.source.StamenProvider = { - TERRAIN: 'terrain', - TONER: 'toner', - WATERCOLOR: 'watercolor' -}; - - -/** - * @type {Object.} - */ -ol.source.StamenProviderConfig = {}; -ol.source.StamenProviderConfig[ol.source.StamenProvider.TERRAIN] = { - type: 'jpg', - minZoom: 4, - maxZoom: 18 -}; -ol.source.StamenProviderConfig[ol.source.StamenProvider.TONER] = { - type: 'png', - minZoom: 0, - maxZoom: 20 -}; -ol.source.StamenProviderConfig[ol.source.StamenProvider.WATERCOLOR] = { - type: 'jpg', - minZoom: 3, - maxZoom: 16 +ol.source.StamenProviderConfig = { + 'terrain': { + minZoom: 4, + maxZoom: 18 + }, + 'toner': { + minZoom: 0, + maxZoom: 20 + }, + 'watercolor': { + minZoom: 3, + maxZoom: 16 + } }; @@ -63,9 +78,9 @@ ol.source.StamenProviderConfig[ol.source.StamenProvider.WATERCOLOR] = { /** * @constructor * @extends {ol.source.XYZ} - * @param {ol.source.StamenOptions} stamenOptions Stamen options. + * @param {ol.source.StamenOptions} options Options. */ -ol.source.Stamen = function(stamenOptions) { +ol.source.Stamen = function(options) { var attribution = new ol.Attribution( 'Map tiles by Stamen Design, ' + @@ -75,18 +90,25 @@ ol.source.Stamen = function(stamenOptions) { 'under ' + 'CC BY SA.'); - var layer = stamenOptions.provider; - if (goog.isDef(stamenOptions.flavor)) { - layer += '-' + stamenOptions.flavor; - } + var i = options.layer.indexOf('-'); + var provider = i == -1 ? options.layer : options.layer.slice(0, i); + goog.asserts.assert(provider in ol.source.StamenProviderConfig); + var providerConfig = ol.source.StamenProviderConfig[provider]; - var config = ol.source.StamenProviderConfig[stamenOptions.provider]; + goog.asserts.assert(options.layer in ol.source.StamenLayerConfig); + var layerConfig = ol.source.StamenLayerConfig[options.layer]; + + var url = goog.isDef(options.url) ? options.url : + 'http://{a-d}.tile.stamen.com/' + options.layer + '/{z}/{x}/{y}.' + + layerConfig.extension; goog.base(this, { attributions: [attribution], - maxZoom: config.maxZoom, - opaque: false, - url: 'http://{a-d}.tile.stamen.com/' + layer + '/{z}/{x}/{y}.' + config.type + maxZoom: providerConfig.maxZoom, + // FIXME uncomment the following when tilegrid supports minZoom + //minZoom: providerConfig.minZoom, + opaque: layerConfig.opaque, + url: url }); };