Avoid unneeded parameter concatenations (thanks @twpayne, refs #85)

This commit is contained in:
Éric Lemoine
2012-11-04 19:31:20 +01:00
parent 529c3e8b6a
commit dd014a3b79
3 changed files with 18 additions and 36 deletions

View File

@@ -5,6 +5,7 @@ goog.provide('ol.source.TiledWMS');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.object'); goog.require('goog.object');
goog.require('goog.uri.utils');
goog.require('ol.Attribution'); goog.require('ol.Attribution');
goog.require('ol.Projection'); goog.require('ol.Projection');
goog.require('ol.TileCoord'); goog.require('ol.TileCoord');
@@ -68,14 +69,15 @@ ol.source.TiledWMS = function(tiledWMSOptions) {
if (tiledWMSOptions.urls) { if (tiledWMSOptions.urls) {
var tileUrlFunctions = goog.array.map( var tileUrlFunctions = goog.array.map(
tiledWMSOptions.urls, function(url) { tiledWMSOptions.urls, function(url) {
return ol.TileUrlFunction.createBboxParam( url = goog.uri.utils.appendParamsFromMap(url, baseParams);
url, baseParams, tileGrid); return ol.TileUrlFunction.createBboxParam(url, tileGrid);
}); });
tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions( tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions(
tileUrlFunctions); tileUrlFunctions);
} else if (tiledWMSOptions.url) { } else if (tiledWMSOptions.url) {
tileUrlFunction = ol.TileUrlFunction.createBboxParam( var url = goog.uri.utils.appendParamsFromMap(
tiledWMSOptions.url, baseParams, tileGrid); tiledWMSOptions.url, baseParams);
tileUrlFunction = ol.TileUrlFunction.createBboxParam(url, tileGrid);
} else { } else {
tileUrlFunction = ol.TileUrlFunction.nullTileUrlFunction; tileUrlFunction = ol.TileUrlFunction.nullTileUrlFunction;
} }

View File

@@ -2,6 +2,7 @@ goog.provide('ol.TileUrlFunction');
goog.provide('ol.TileUrlFunctionType'); goog.provide('ol.TileUrlFunctionType');
goog.require('goog.math'); goog.require('goog.math');
goog.require('goog.uri.utils');
goog.require('ol.TileCoord'); goog.require('ol.TileCoord');
goog.require('ol.tilegrid.TileGrid'); goog.require('ol.tilegrid.TileGrid');
@@ -69,29 +70,21 @@ ol.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) {
/** /**
* @param {string} baseUrl WMS base URL. * @param {string} baseUrl Base URL (may have query data).
* @param {Object} baseParams Query string parameters.
* @param {ol.tilegrid.TileGrid} tileGrid Tile grid. * @param {ol.tilegrid.TileGrid} tileGrid Tile grid.
* @return {ol.TileUrlFunctionType} Tile URL function. * @return {ol.TileUrlFunctionType} Tile URL function.
*/ */
ol.TileUrlFunction.createBboxParam = function(baseUrl, baseParams, tileGrid) { ol.TileUrlFunction.createBboxParam = function(baseUrl, tileGrid) {
return function(tileCoord) { return function(tileCoord) {
if (goog.isNull(tileCoord)) { if (goog.isNull(tileCoord)) {
return undefined; return undefined;
} else { } else {
var tileExtent = tileGrid.getTileCoordExtent(tileCoord); var tileExtent = tileGrid.getTileCoordExtent(tileCoord);
var params = goog.object.clone(baseParams);
// FIXME Projection dependant axis order. // FIXME Projection dependant axis order.
var bboxValue = [ var bboxValue = [
tileExtent.minX, tileExtent.minY, tileExtent.maxX, tileExtent.maxY tileExtent.minX, tileExtent.minY, tileExtent.maxX, tileExtent.maxY
].join(','); ].join(',');
goog.object.extend(params, {'BBOX': bboxValue}); return goog.uri.utils.appendParam(baseUrl, 'BBOX', bboxValue);
var url = baseUrl;
for (var p in params) {
url += (~url.indexOf('?') ? '&' : '?') +
p + '=' + encodeURIComponent(params[p]);
}
return url;
} }
}; };
}; };

View File

@@ -69,27 +69,14 @@ describe('ol.TileUrlFunction', function() {
maxZoom: 10 maxZoom: 10
}); });
}); });
describe('base params in object', function() { it('creates expected URL', function() {
it('creates expected URL', function() { var tileUrlFunction = ol.TileUrlFunction.createBboxParam(
var tileUrlFunction = ol.TileUrlFunction.createBboxParam( 'http://wms?foo=bar', tileGrid);
'http://wms', {'foo': 'bar'}, tileGrid); var tileCoord = new ol.TileCoord(1, 0, 0);
var tileCoord = new ol.TileCoord(1, 0, 0); var tileUrl = tileUrlFunction(tileCoord);
var tileUrl = tileUrlFunction(tileCoord); var expected = 'http://wms?foo=bar&BBOX=-20037508.342789244' +
var expected = 'http://wms?foo=bar&BBOX=-20037508.342789244' + '%2C20037508.342789244%2C0%2C40075016.68557849';
'%2C20037508.342789244%2C0%2C40075016.68557849'; expect(tileUrl).toEqual(expected);
expect(tileUrl).toEqual(expected);
});
});
describe('base params in URL', function() {
it('creates expected URL', function() {
var tileUrlFunction = ol.TileUrlFunction.createBboxParam(
'http://wms?foo=bar', {}, tileGrid);
var tileCoord = new ol.TileCoord(1, 0, 0);
var tileUrl = tileUrlFunction(tileCoord);
var expected = 'http://wms?foo=bar&BBOX=-20037508.342789244' +
'%2C20037508.342789244%2C0%2C40075016.68557849';
expect(tileUrl).toEqual(expected);
});
}); });
}); });
}); });