diff --git a/src/ol/imageurlfunction.js b/src/ol/imageurlfunction.js index e6f3849f4a..9f52622858 100644 --- a/src/ol/imageurlfunction.js +++ b/src/ol/imageurlfunction.js @@ -14,15 +14,16 @@ ol.ImageUrlFunctionType; /** * @param {string} baseUrl Base URL (may have query data). + * @param {Object.} params to encode in the url. * @param {function(string, Object., ol.Extent, ol.Size, * ol.Projection)} paramsFunction params function. * @return {ol.ImageUrlFunctionType} Image URL function. */ ol.ImageUrlFunction.createFromParamsFunction = - function(baseUrl, paramsFunction) { + function(baseUrl, params, paramsFunction) { return function(extent, size, projection) { return paramsFunction( - baseUrl, this.params, extent, size, projection); + baseUrl, params, extent, size, projection); }; }; diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js index f9ff870658..ac03dd7652 100644 --- a/src/ol/renderer/canvas/canvastilelayerrenderer.js +++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js @@ -14,7 +14,6 @@ goog.require('ol.TileState'); goog.require('ol.layer.TileLayer'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.canvas.Layer'); -goog.require('ol.tilegrid'); diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index ca4d7ed9ad..41e1b56c31 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -14,7 +14,6 @@ goog.require('ol.geom.GeometryType'); goog.require('ol.layer.Vector'); goog.require('ol.renderer.canvas.Layer'); goog.require('ol.renderer.canvas.VectorRenderer'); -goog.require('ol.tilegrid'); goog.require('ol.tilegrid.TileGrid'); diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js index 1c3c38ea7b..a3d99ff47d 100644 --- a/src/ol/renderer/dom/domtilelayerrenderer.js +++ b/src/ol/renderer/dom/domtilelayerrenderer.js @@ -16,7 +16,6 @@ goog.require('ol.ViewHint'); goog.require('ol.dom'); goog.require('ol.layer.TileLayer'); goog.require('ol.renderer.dom.Layer'); -goog.require('ol.tilegrid'); goog.require('ol.tilegrid.TileGrid'); diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index 53616f2c4e..ff586257fc 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -23,7 +23,6 @@ goog.require('ol.layer.TileLayer'); goog.require('ol.renderer.webgl.FragmentShader'); goog.require('ol.renderer.webgl.Layer'); goog.require('ol.renderer.webgl.VertexShader'); -goog.require('ol.tilegrid'); diff --git a/src/ol/source/imagesource.js b/src/ol/source/imagesource.js index 060a5c46ce..b96973af8b 100644 --- a/src/ol/source/imagesource.js +++ b/src/ol/source/imagesource.js @@ -82,7 +82,7 @@ goog.inherits(ol.source.ImageSource, ol.source.Source); ol.source.ImageSource.prototype.createImage = function(extent, resolution, size, projection) { var image = null; - var imageUrl = this.imageUrlFunction.call(this, extent, size, projection); + var imageUrl = this.imageUrlFunction(extent, size, projection); if (goog.isDef(imageUrl)) { image = new ol.Image( extent, resolution, imageUrl, this.crossOrigin_, diff --git a/src/ol/source/imagetilesource.js b/src/ol/source/imagetilesource.js index 23a8edb5f3..2a6323f634 100644 --- a/src/ol/source/imagetilesource.js +++ b/src/ol/source/imagetilesource.js @@ -94,8 +94,7 @@ ol.source.ImageTileSource.prototype.getTile = } else { goog.asserts.assert(tileGrid); goog.asserts.assert(projection); - var tileUrl = this.tileUrlFunction.call(this, - tileCoord, tileGrid, projection); + var tileUrl = this.tileUrlFunction(tileCoord, tileGrid, projection); var tile = new ol.ImageTile( tileCoord, goog.isDef(tileUrl) ? ol.TileState.IDLE : ol.TileState.EMPTY, diff --git a/src/ol/source/singleimagewmssource.js b/src/ol/source/singleimagewmssource.js index e622cdf9c3..ec4f9a199d 100644 --- a/src/ol/source/singleimagewmssource.js +++ b/src/ol/source/singleimagewmssource.js @@ -11,14 +11,13 @@ goog.require('ol.source.wms'); /** * @constructor - * @implements {ol.source.IWMS} * @extends {ol.source.ImageSource} * @param {ol.source.SingleImageWMSOptions} options Options. */ ol.source.SingleImageWMS = function(options) { var imageUrlFunction = goog.isDef(options.url) ? ol.ImageUrlFunction.createFromParamsFunction( - options.url, ol.source.wms.getUrl) : + options.url, options.params, ol.source.wms.getUrl) : ol.ImageUrlFunction.nullImageUrlFunction; goog.base(this, { @@ -30,16 +29,6 @@ ol.source.SingleImageWMS = function(options) { imageUrlFunction: imageUrlFunction }); - /** - * @inheritDoc - */ - this.url = options.url; - - /** - * @inheritDoc - */ - this.params = options.params; - /** * @private * @type {ol.Image} diff --git a/src/ol/source/tiledwmssource.js b/src/ol/source/tiledwmssource.js index a34468883b..d719aab9a0 100644 --- a/src/ol/source/tiledwmssource.js +++ b/src/ol/source/tiledwmssource.js @@ -14,7 +14,6 @@ goog.require('ol.source.wms'); /** * @constructor - * @implements {ol.source.IWMS} * @extends {ol.source.ImageTileSource} * @param {ol.source.TiledWMSOptions} tiledWMSOptions options. */ @@ -33,7 +32,7 @@ ol.source.TiledWMS = function(tiledWMSOptions) { var tileUrlFunctions = goog.array.map( urls, function(url) { return ol.TileUrlFunction.createFromParamsFunction( - url, ol.source.wms.getUrl); + url, tiledWMSOptions.params, ol.source.wms.getUrl); }); tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions( tileUrlFunctions); @@ -68,16 +67,6 @@ ol.source.TiledWMS = function(tiledWMSOptions) { return new ol.TileCoord(tileCoord.z, x, tileCoord.y); }; - /** - * @inheritDoc - */ - this.url = goog.isDef(urls) ? urls[0] : undefined; - - /** - * @inheritDoc - */ - this.params = tiledWMSOptions.params; - goog.base(this, { attributions: tiledWMSOptions.attributions, crossOrigin: tiledWMSOptions.crossOrigin, diff --git a/src/ol/source/wms.js b/src/ol/source/wms.js index 315653b832..d81e822549 100644 --- a/src/ol/source/wms.js +++ b/src/ol/source/wms.js @@ -1,29 +1,6 @@ -goog.provide('ol.source.IWMS'); goog.provide('ol.source.wms'); - -/** - * Interface for WMS - * @interface - */ -ol.source.IWMS = function() {}; - - -/** - * @type {string|undefined} The url for this source. - */ -ol.source.IWMS.prototype.url; - - -/** - * @type {Object.} Parameters for WMS requests. 'LAYERS' is mandatory. - * 'STYLES' defaults to ''. 'VERSION' defaults to '1.3.0'. 'CRS'/'SRS', - * 'BBOX' and 'SIZE' are added dynamically. - */ -ol.source.IWMS.prototype.params; - - /** * @param {string} baseUrl WMS base url. * @param {Object.} params Request parameters. diff --git a/src/ol/tilegrid/tilegrid.js b/src/ol/tilegrid/tilegrid.js index 21a3f38750..182b5d7dd3 100644 --- a/src/ol/tilegrid/tilegrid.js +++ b/src/ol/tilegrid/tilegrid.js @@ -1,6 +1,5 @@ // FIXME cope with tile grids whose minium zoom is not zero -goog.provide('ol.tilegrid'); goog.provide('ol.tilegrid.TileGrid'); goog.require('goog.array'); diff --git a/src/ol/tileurlfunction.js b/src/ol/tileurlfunction.js index 45a884d139..a586fe9ca7 100644 --- a/src/ol/tileurlfunction.js +++ b/src/ol/tileurlfunction.js @@ -62,12 +62,13 @@ ol.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) { /** * @param {string} baseUrl Base URL (may have query data). + * @param {Object.} params to encode in the url. * @param {function(string, Object., ol.Extent, ol.Size, * ol.Projection)} paramsFunction params function. * @return {ol.TileUrlFunctionType} Tile URL function. */ ol.TileUrlFunction.createFromParamsFunction = - function(baseUrl, paramsFunction) { + function(baseUrl, params, paramsFunction) { return function(tileCoord, tileGrid, projection) { if (goog.isNull(tileCoord)) { return undefined; @@ -75,7 +76,7 @@ ol.TileUrlFunction.createFromParamsFunction = var size = tileGrid.getTileSize(tileCoord.z); var extent = tileGrid.getTileCoordExtent(tileCoord); return paramsFunction( - baseUrl, this.params, extent, size, projection); + baseUrl, params, extent, size, projection); } }; }; diff --git a/test/spec/ol/source/wms.test.js b/test/spec/ol/source/wms.test.js index a437be4e17..8553c6fe1a 100644 --- a/test/spec/ol/source/wms.test.js +++ b/test/spec/ol/source/wms.test.js @@ -3,17 +3,16 @@ goog.provide('ol.source.test.wms'); describe('ol.source.wms', function() { describe('ol.source.wms.getUrl', function() { - var that = {params: {}}; it('creates expected URL', function() { var epsg3857 = ol.projection.get('EPSG:3857'); var tileGrid = ol.tilegrid.getForProjection(epsg3857); var tileUrlFunction = ol.TileUrlFunction.createFromParamsFunction( - 'http://wms?foo=bar', ol.source.wms.getUrl); + 'http://wms', {'foo': 'bar'}, ol.source.wms.getUrl); var tileCoord = new ol.TileCoord(1, 0, 0); - var tileUrl = tileUrlFunction.call(that, tileCoord, tileGrid, epsg3857); - var expected = 'http://wms?foo=bar&SERVICE=WMS&VERSION=1.3.0&REQUEST=' + + var tileUrl = tileUrlFunction(tileCoord, tileGrid, epsg3857); + var expected = 'http://wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=' + 'GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&WIDTH=256&HEIGHT=256&' + - 'STYLES=&CRS=EPSG%3A3857&BBOX=' + + 'foo=bar&STYLES=&CRS=EPSG%3A3857&BBOX=' + '-20037508.342789244%2C-20037508.342789244%2C0%2C0'; expect(tileUrl).to.eql(expected); }); @@ -21,12 +20,12 @@ describe('ol.source.wms', function() { var epsg4326 = ol.projection.get('EPSG:4326'); var tileGrid = ol.tilegrid.getForProjection(epsg4326); var tileUrlFunction = ol.TileUrlFunction.createFromParamsFunction( - 'http://wms?foo=bar', ol.source.wms.getUrl); + 'http://wms', {'foo': 'bar'}, ol.source.wms.getUrl); var tileCoord = new ol.TileCoord(1, 0, 0); - var tileUrl = tileUrlFunction.call(that, tileCoord, tileGrid, epsg4326); - var expected = 'http://wms?foo=bar&SERVICE=WMS&VERSION=1.3.0&REQUEST=' + + var tileUrl = tileUrlFunction(tileCoord, tileGrid, epsg4326); + var expected = 'http://wms?SERVICE=WMS&VERSION=1.3.0&REQUEST=' + 'GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&WIDTH=256&HEIGHT=256&' + - 'STYLES=&CRS=EPSG%3A4326&BBOX=-90%2C-180%2C90%2C0'; + 'foo=bar&STYLES=&CRS=EPSG%3A4326&BBOX=-90%2C-180%2C90%2C0'; expect(tileUrl).to.eql(expected); }); }); @@ -38,4 +37,3 @@ goog.require('ol.TileCoord'); goog.require('ol.TileUrlFunction'); goog.require('ol.projection'); goog.require('ol.source.wms'); -goog.require('ol.tilegrid'); diff --git a/test/spec/ol/tilegrid/tilegrid.test.js b/test/spec/ol/tilegrid/tilegrid.test.js index 9cf0b7add6..507b170a8d 100644 --- a/test/spec/ol/tilegrid/tilegrid.test.js +++ b/test/spec/ol/tilegrid/tilegrid.test.js @@ -660,5 +660,4 @@ goog.require('ol.Extent'); goog.require('ol.Size'); goog.require('ol.TileCoord'); goog.require('ol.projection'); -goog.require('ol.tilegrid'); goog.require('ol.tilegrid.TileGrid'); diff --git a/test/spec/ol/tileurlfunction.test.js b/test/spec/ol/tileurlfunction.test.js index 9e6b58f67a..6b5bd490d8 100644 --- a/test/spec/ol/tileurlfunction.test.js +++ b/test/spec/ol/tileurlfunction.test.js @@ -81,14 +81,14 @@ describe('ol.TileUrlFunction', function() { describe('createFromParamsFunction', function() { var paramsFunction = function(url, params) { return arguments; }; var projection = ol.projection.get('EPSG:3857'); + var params = {foo: 'bar'}; var tileUrlFunction = ol.TileUrlFunction.createFromParamsFunction( - 'url', paramsFunction); + 'url', params, paramsFunction); it('calls the passed function with the correct arguments', function() { - var that = {params: {foo: 'bar'}}; - var args = tileUrlFunction.call(that, new ol.TileCoord(0, 0, 0), + var args = tileUrlFunction(new ol.TileCoord(0, 0, 0), ol.tilegrid.getForProjection(projection), projection); expect(args[0]).to.eql('url'); - expect(args[1]).to.be(that.params); + expect(args[1]).to.be(params); expect(args[2]).to.eql(projection.getExtent()); expect(args[3]).to.eql(new ol.Size(256, 256)); expect(args[4]).to.eql(projection); @@ -101,4 +101,3 @@ goog.require('ol.Size'); goog.require('ol.TileCoord'); goog.require('ol.TileUrlFunction'); goog.require('ol.projection'); -goog.require('ol.tilegrid');