diff --git a/src/ol/source/wmssource.js b/src/ol/source/wmssource.js index dac71c6b10..230a5a5889 100644 --- a/src/ol/source/wmssource.js +++ b/src/ol/source/wmssource.js @@ -95,6 +95,11 @@ ol.source.wms.getFeatureInfo = goog.object.extend(params, {'X': x, 'Y': y}); } goog.object.extend(params, localOptions.params); + for (var key in params) { + if (goog.uri.utils.hasParam(url, key)) { + url = goog.uri.utils.removeParam(url, key); + } + } url = goog.uri.utils.appendParamsFromMap(url, params); if (localOptions.method == ol.source.WMSGetFeatureInfoMethod.IFRAME) { goog.global.setTimeout(function() { diff --git a/test/spec/ol/source/wmssource.test.js b/test/spec/ol/source/wmssource.test.js index fb23af0dbf..f5241abc9f 100644 --- a/test/spec/ol/source/wmssource.test.js +++ b/test/spec/ol/source/wmssource.test.js @@ -45,6 +45,17 @@ describe('ol.source.wms', function() { done(); }); }); + it('overrides any existing parameters', function(done) { + ol.source.wms.getFeatureInfo('?REQUEST=GetMap&VERSION=1.3&LAYERS=' + + 'foo&STYLES=x', + [5, 10], {params: {'INFO_FORMAT': 'text/plain', STYLES: 'y'}}, + function(info) { + expect(info).to.eql(''); + done(); + }); + }); }); });