diff --git a/src/ol/source/wmssource.js b/src/ol/source/wmssource.js index 23eec3dfa2..eebba21c2d 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'); @@ -102,7 +103,11 @@ ol.source.wms.getFeatureInfo = goog.object.extend(params, {'X': x, 'Y': y}); } goog.object.extend(params, localOptions.params); - url = goog.uri.utils.appendParamsFromMap(url, params); + var uri = new goog.Uri(url, true); + for (var key in params) { + uri.setParameterValue(key, params[key]); + } + 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 fb23af0dbf..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(); }); }); @@ -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(); + }); + }); }); });