From 2b4b2dadf7946d601af113d18bb2088a0db5a642 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Thu, 10 Jul 2014 10:49:16 +0200 Subject: [PATCH 1/2] Be stricter with the type of ol.source.TileWMS#_urls --- src/ol/source/tilewmssource.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ol/source/tilewmssource.js b/src/ol/source/tilewmssource.js index 4068f6023e..8910063b3d 100644 --- a/src/ol/source/tilewmssource.js +++ b/src/ol/source/tilewmssource.js @@ -56,9 +56,9 @@ ol.source.TileWMS = function(opt_options) { /** * @private - * @type {Array.|undefined} + * @type {!Array.} */ - this.urls_ = urls; + this.urls_ = goog.isDefAndNotNull(urls) ? urls : []; /** * @private @@ -232,7 +232,7 @@ ol.source.TileWMS.prototype.getRequestUrl_ = pixelRatio, projection, params) { var urls = this.urls_; - if (!goog.isDef(urls) || goog.array.isEmpty(urls)) { + if (goog.array.isEmpty(urls)) { return undefined; } @@ -283,7 +283,7 @@ ol.source.TileWMS.prototype.getRequestUrl_ = if (urls.length == 1) { url = urls[0]; } else { - var index = goog.math.modulo(tileCoord.hash(), this.urls_.length); + var index = goog.math.modulo(tileCoord.hash(), urls.length); url = urls[index]; } return goog.uri.utils.appendParamsFromMap(url, params); @@ -309,7 +309,7 @@ ol.source.TileWMS.prototype.getTilePixelSize = /** * Return the URLs used for this WMS source. - * @return {Array.|undefined} URLs. + * @return {!Array.} URLs. * @api */ ol.source.TileWMS.prototype.getUrls = function() { From 5fb78fb352f6681d757d058a628ed23aac223620 Mon Sep 17 00:00:00 2001 From: Peter Robins Date: Thu, 10 Jul 2014 11:04:18 +0200 Subject: [PATCH 2/2] Add ol.source.TileWMS#setUrls and setUrl --- src/ol/source/tilewmssource.js | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/ol/source/tilewmssource.js b/src/ol/source/tilewmssource.js index 8910063b3d..46ea249a5c 100644 --- a/src/ol/source/tilewmssource.js +++ b/src/ol/source/tilewmssource.js @@ -323,10 +323,39 @@ ol.source.TileWMS.prototype.getUrls = function() { ol.source.TileWMS.prototype.resetCoordKeyPrefix_ = function() { var i = 0; var res = []; - for (var key in this.params_) { + + var j, jj; + for (j = 0, jj = this.urls_.length; j < jj; ++j) { + res[i++] = this.urls_[j]; + } + + var key; + for (key in this.params_) { res[i++] = key + '-' + this.params_[key]; } - this.coordKeyPrefix_ = res.join('/'); + + this.coordKeyPrefix_ = res.join('#'); +}; + + +/** + * @param {string|undefined} url URL. + * @api + */ +ol.source.TileWMS.prototype.setUrl = function(url) { + var urls = goog.isDef(url) ? ol.TileUrlFunction.expandUrl(url) : null; + this.setUrls(urls); +}; + + +/** + * @param {Array.|undefined} urls URLs. + * @api + */ +ol.source.TileWMS.prototype.setUrls = function(urls) { + this.urls_ = goog.isDefAndNotNull(urls) ? urls : []; + this.resetCoordKeyPrefix_(); + this.dispatchChangeEvent(); };