diff --git a/lib/OpenLayers/Layer/WMS.js b/lib/OpenLayers/Layer/WMS.js index 8f26ba2069..a564df6f41 100644 --- a/lib/OpenLayers/Layer/WMS.js +++ b/lib/OpenLayers/Layer/WMS.js @@ -54,7 +54,16 @@ OpenLayers.Layer.WMS = OpenLayers.Class(OpenLayers.Layer.Grid, { * but some services want it that way. Default false. */ encodeBBOX: false, - + + /** + * APIProperty: noMagic + * {Boolean} If true, the image format will not be automagicaly switched + * from image/jpeg to image/png or image/gif when using + * TRANSPARENT=TRUE. Also isBaseLayer will not changed by the + * constructor. Default false. + */ + noMagic: false, + /** * Constructor: OpenLayers.Layer.WMS * Create a new WMS layer object @@ -87,7 +96,7 @@ OpenLayers.Layer.WMS = OpenLayers.Class(OpenLayers.Layer.Grid, { //layer is transparent - if (this.params.TRANSPARENT && + if (!this.noMagic && this.params.TRANSPARENT && this.params.TRANSPARENT.toString().toLowerCase() == "true") { // unless explicitly set in options, make layer an overlay diff --git a/tests/Layer/WMS.html b/tests/Layer/WMS.html index 18c9f86977..ee8c743a2d 100644 --- a/tests/Layer/WMS.html +++ b/tests/Layer/WMS.html @@ -15,7 +15,7 @@ format: 'image/jpeg'}; function test_Layer_WMS_constructor (t) { - t.plan( 13 ); + t.plan( 15 ); var trans_format = "image/png"; if (OpenLayers.Util.alphaHack()) { trans_format = "image/gif"; } @@ -52,6 +52,17 @@ params.TRANSPARENT = false; var layer6 = new OpenLayers.Layer.WMS(name, url, params); t.eq(layer6.isBaseLayer, true, "transparency == false, wms is baselayer"); + + params.TRANSPARENT = true; + var layer7 = new OpenLayers.Layer.WMS(name, url, params, {noMagic: true}); + t.eq(layer7.params.FORMAT, "image/jpeg", "When using noMagic true image/jpeg will not be automagically switched to image/png or image/gif if transparent"); + + params.TRANSPARENT = true; + var layer8 = new OpenLayers.Layer.WMS(name, url, params, {noMagic: true}); + t.eq(layer8.isBaseLayer, true, "When using noMagic then transparent means the wms layer is not automagically changed to not being a baselayer"); + + params.TRANSPARENT = false; + } function test_Layer_WMS_addtile (t) {