diff --git a/changelog/upgrade-notes.md b/changelog/upgrade-notes.md index d0d1c9e152..4888b22abb 100644 --- a/changelog/upgrade-notes.md +++ b/changelog/upgrade-notes.md @@ -39,6 +39,8 @@ A number of internal types have been renamed. This will not affect those who us * rename `ol.RendererType` to `ol.renderer.Type` * rename `ol.source.ImageEvent` to `ol.source.Image.Event` * rename `ol.source.ImageEventType` to `ol.source.Image.EventType` + * rename `ol.source.RasterEvent` to `ol.source.Raster.Event` + * rename `ol.source.RasterEventType` to `ol.source.Raster.EventType` * rename `ol.source.TileEvent` to `ol.source.Tile.Event` * rename `ol.source.TileEventType` to `ol.source.Tile.EventType` * rename `ol.source.VectorEvent` to `ol.source.Vector.Event` diff --git a/src/ol/source/raster.js b/src/ol/source/raster.js index fb4f178973..8ed70b96e6 100644 --- a/src/ol/source/raster.js +++ b/src/ol/source/raster.js @@ -1,7 +1,5 @@ goog.provide('ol.source.Raster'); goog.provide('ol.RasterOperationType'); -goog.provide('ol.source.RasterEvent'); -goog.provide('ol.source.RasterEventType'); goog.require('ol'); goog.require('ol.transform'); @@ -41,7 +39,7 @@ ol.RasterOperationType = { * * @constructor * @extends {ol.source.Image} - * @fires ol.source.RasterEvent + * @fires ol.source.Raster.Event * @param {olx.source.RasterOptions} options Options. * @api */ @@ -305,8 +303,8 @@ ol.source.Raster.prototype.composeFrame_ = function(frameState, callback) { } var data = {}; - this.dispatchEvent(new ol.source.RasterEvent( - ol.source.RasterEventType.BEFOREOPERATIONS, frameState, data)); + this.dispatchEvent(new ol.source.Raster.Event( + ol.source.Raster.EventType.BEFOREOPERATIONS, frameState, data)); this.worker_.process(imageDatas, data, this.onWorkerComplete_.bind(this, frameState, callback)); @@ -334,8 +332,8 @@ ol.source.Raster.prototype.onWorkerComplete_ = function(frameState, callback, er return; } - this.dispatchEvent(new ol.source.RasterEvent( - ol.source.RasterEventType.AFTEROPERATIONS, frameState, data)); + this.dispatchEvent(new ol.source.Raster.Event( + ol.source.Raster.EventType.AFTEROPERATIONS, frameState, data)); var resolution = frameState.viewState.resolution / frameState.pixelRatio; if (!this.isDirty_(frameState.extent, resolution)) { @@ -467,7 +465,7 @@ ol.source.Raster.createTileRenderer_ = function(source) { * @param {olx.FrameState} frameState The frame state. * @param {Object} data An object made available to operations. */ -ol.source.RasterEvent = function(type, frameState, data) { +ol.source.Raster.Event = function(type, frameState, data) { ol.events.Event.call(this, type); /** @@ -493,23 +491,23 @@ ol.source.RasterEvent = function(type, frameState, data) { this.data = data; }; -ol.inherits(ol.source.RasterEvent, ol.events.Event); +ol.inherits(ol.source.Raster.Event, ol.events.Event); /** * @enum {string} */ -ol.source.RasterEventType = { +ol.source.Raster.EventType = { /** * Triggered before operations are run. - * @event ol.source.RasterEvent#beforeoperations + * @event ol.source.Raster.Event#beforeoperations * @api */ BEFOREOPERATIONS: 'beforeoperations', /** * Triggered after operations are run. - * @event ol.source.RasterEvent#afteroperations + * @event ol.source.Raster.Event#afteroperations * @api */ AFTEROPERATIONS: 'afteroperations' 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.