diff --git a/src/ol/source/wmssource.js b/src/ol/source/wmssource.js index 230a5a5889..962fb6b199 100644 --- a/src/ol/source/wmssource.js +++ b/src/ol/source/wmssource.js @@ -1,6 +1,7 @@ goog.provide('ol.source.WMSGetFeatureInfoMethod'); goog.provide('ol.source.wms'); +goog.require('goog.Uri'); goog.require('goog.net.XhrIo'); goog.require('goog.object'); goog.require('goog.uri.utils'); @@ -95,12 +96,11 @@ ol.source.wms.getFeatureInfo = goog.object.extend(params, {'X': x, 'Y': y}); } goog.object.extend(params, localOptions.params); + var uri = new goog.Uri(url, true); for (var key in params) { - if (goog.uri.utils.hasParam(url, key)) { - url = goog.uri.utils.removeParam(url, key); - } + uri.setParameterValue(key, params[key]); } - url = goog.uri.utils.appendParamsFromMap(url, params); + url = uri.toString(); if (localOptions.method == ol.source.WMSGetFeatureInfoMethod.IFRAME) { goog.global.setTimeout(function() { success(''); diff --git a/test/spec/ol/source/wmssource.test.js b/test/spec/ol/source/wmssource.test.js index f5241abc9f..af0e6b7c58 100644 --- a/test/spec/ol/source/wmssource.test.js +++ b/test/spec/ol/source/wmssource.test.js @@ -32,8 +32,8 @@ describe('ol.source.wms', function() { [5, 10], {params: {'INFO_FORMAT': 'text/plain'}}, function(info) { expect(info).to.eql(''); + '?request=GetFeatureInfo&version=1.3&layers=foo&query_layers=' + + 'foo&info_format=text%2Fplain&i=5&j=10">'); done(); }); }); @@ -47,12 +47,12 @@ describe('ol.source.wms', function() { }); it('overrides any existing parameters', function(done) { ol.source.wms.getFeatureInfo('?REQUEST=GetMap&VERSION=1.3&LAYERS=' + - 'foo&STYLES=x', + 'foo&styles=x', [5, 10], {params: {'INFO_FORMAT': 'text/plain', STYLES: 'y'}}, function(info) { expect(info).to.eql(''); + '?request=GetFeatureInfo&version=1.3&layers=foo&query_layers=' + + 'foo&styles=y&info_format=text%2Fplain&i=5&j=10">'); done(); }); });