Avoid unneeded parameter concatenations (thanks @twpayne, refs #85)
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user