fix for #650 - if user specifies a layer as transparent and of format image/jpg, we change it to the appropriate type (gif or png). Sure, it's somewhat magical... but it will probably help people out in the long run
git-svn-id: http://svn.openlayers.org/trunk/openlayers@3554 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -40,6 +40,9 @@ OpenLayers.Layer.WMS.prototype =
|
||||
*/
|
||||
reproject: true,
|
||||
|
||||
/** @type Boolean */
|
||||
isBaseLayer: true,
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Layer.WMS
|
||||
* Create a new WMS layer object
|
||||
@@ -70,13 +73,24 @@ OpenLayers.Layer.WMS.prototype =
|
||||
OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS)
|
||||
);
|
||||
|
||||
// unless explicitly set in options, if the layer is transparent,
|
||||
// it will be an overlay
|
||||
if (options == null || options.isBaseLayer == null) {
|
||||
this.isBaseLayer = ((this.params.TRANSPARENT != "TRUE") &&
|
||||
(this.params.TRANSPARENT != "true") &&
|
||||
(this.params.TRANSPARENT != true));
|
||||
|
||||
//layer is transparent
|
||||
if (this.params.TRANSPARENT &&
|
||||
this.params.TRANSPARENT.toString().toLowerCase() == "true") {
|
||||
|
||||
// unless explicitly set in options, make layer an overlay
|
||||
if ( (options == null) || (!options.isBaseLayer) ) {
|
||||
this.isBaseLayer = false;
|
||||
}
|
||||
|
||||
// jpegs can never be transparent, so intelligently switch the
|
||||
// format, depending on teh browser's capabilities
|
||||
if (this.params.FORMAT == "image/jpeg") {
|
||||
this.params.FORMAT = OpenLayers.Util.alphaHack() ? "image/gif"
|
||||
: "image/png";
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -74,13 +74,23 @@ OpenLayers.Layer.WMS.Untiled.prototype =
|
||||
OpenLayers.Util.upperCaseObject(this.DEFAULT_PARAMS)
|
||||
);
|
||||
|
||||
// unless explicitly set in options, if the layer is transparent,
|
||||
// it will be an overlay
|
||||
if ((options == null) || (options.isBaseLayer == null)) {
|
||||
this.isBaseLayer = ((this.params.TRANSPARENT != "TRUE") &&
|
||||
(this.params.TRANSPARENT != "true") &&
|
||||
(this.params.TRANSPARENT != true));
|
||||
//layer is transparent
|
||||
if (this.params.TRANSPARENT &&
|
||||
this.params.TRANSPARENT.toString().toLowerCase() == "true") {
|
||||
|
||||
// unless explicitly set in options, make layer an overlay
|
||||
if ( (options == null) || (!options.isBaseLayer) ) {
|
||||
this.isBaseLayer = false;
|
||||
}
|
||||
|
||||
// jpegs can never be transparent, so intelligently switch the
|
||||
// format, depending on teh browser's capabilities
|
||||
if (this.params.FORMAT == "image/jpeg") {
|
||||
this.params.FORMAT = OpenLayers.Util.alphaHack() ? "image/gif"
|
||||
: "image/png";
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,11 +10,14 @@
|
||||
var url = "http://octo.metacarta.com/cgi-bin/mapserv";
|
||||
var params = { map: '/mapdata/vmap_wms.map',
|
||||
layers: 'basic',
|
||||
format: 'image/png'};
|
||||
format: 'image/jpeg'};
|
||||
|
||||
function test_01_Layer_WMS_constructor (t) {
|
||||
t.plan( 10 );
|
||||
t.plan( 13 );
|
||||
|
||||
var trans_format = "image/png";
|
||||
if (OpenLayers.Util.alphaHack()) { trans_format = "image/gif"; }
|
||||
|
||||
var url = "http://octo.metacarta.com/cgi-bin/mapserv";
|
||||
layer = new OpenLayers.Layer.WMS(name, url, params);
|
||||
t.ok( layer instanceof OpenLayers.Layer.WMS, "new OpenLayers.Layer.WMS returns object" );
|
||||
@@ -32,14 +35,17 @@
|
||||
params.TRANSPARENT = "TRUE";
|
||||
var layer3 = new OpenLayers.Layer.WMS(name, url, params);
|
||||
t.eq(layer3.isBaseLayer, false, "transparency == 'TRUE', wms is not baselayer");
|
||||
t.eq(layer3.params.FORMAT, trans_format, "transparent = TRUE causes non-image/jpeg format");
|
||||
|
||||
params.TRANSPARENT = "TRuE";
|
||||
var layer4 = new OpenLayers.Layer.WMS(name, url, params);
|
||||
t.eq(layer4.isBaseLayer, true, "transparency == 'TRuE', wms is baselayer");
|
||||
t.eq(layer4.isBaseLayer, false, "transparency == 'TRuE', wms is not baselayer");
|
||||
t.eq(layer4.params.FORMAT, trans_format, "transparent = TRuE causes non-image/jpeg format");
|
||||
|
||||
params.TRANSPARENT = true;
|
||||
var layer5 = new OpenLayers.Layer.WMS(name, url, params);
|
||||
t.eq(layer5.isBaseLayer, false, "transparency == true, wms is not baselayer");
|
||||
t.eq(layer5.params.FORMAT, trans_format, "transparent = true causes non-image/jpeg format");
|
||||
|
||||
params.TRANSPARENT = false;
|
||||
var layer6 = new OpenLayers.Layer.WMS(name, url, params);
|
||||
|
||||
Reference in New Issue
Block a user