diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index 52339a0e3d..64e5bda570 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -29,6 +29,12 @@ OpenLayers.Layer = OpenLayers.Class({ */ div: null, + /** + * Property: opacity + * {Float} The layer's opacity. Float number between 0.0 and 1.0. + */ + opacity: null, + /** * Constant: EVENT_TYPES * {Array(String)} Supported application event types diff --git a/lib/OpenLayers/Layer/Markers.js b/lib/OpenLayers/Layer/Markers.js index ba5b30592b..262fb123df 100644 --- a/lib/OpenLayers/Layer/Markers.js +++ b/lib/OpenLayers/Layer/Markers.js @@ -57,7 +57,22 @@ OpenLayers.Layer.Markers = OpenLayers.Class(OpenLayers.Layer, { OpenLayers.Layer.prototype.destroy.apply(this, arguments); }, - + /** + * APIMethod: setOpacity + * Sets the opacity for all the markers. + * + * Parameter: + * opacity - {Float} + */ + setOpacity: function(opacity) { + if (opacity != this.opacity) { + this.opacity = opacity; + for (var i = 0; i < this.markers.length; i++) { + this.markers[i].setOpacity(this.opacity); + } + } + }, + /** * Method: moveTo * @@ -85,6 +100,11 @@ OpenLayers.Layer.Markers = OpenLayers.Class(OpenLayers.Layer, { */ addMarker: function(marker) { this.markers.push(marker); + + if (this.opacity != null) { + marker.setOpacity(this.opacity); + } + if (this.map && this.map.getExtent()) { marker.map = this.map; this.drawMarker(marker); diff --git a/tests/Layer/test_Markers.html b/tests/Layer/test_Markers.html index 19612600b3..5b70308b1e 100644 --- a/tests/Layer/test_Markers.html +++ b/tests/Layer/test_Markers.html @@ -77,6 +77,32 @@ } + function test_Layer_Markers_setOpacity(t) { + t.plan(1); + + layer = new OpenLayers.Layer.Markers('Test Layer'); + + var opacity = 0.1234; + + for (var i = 0; i < 12; i++) { + layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0), new OpenLayers.Icon())); + } + + layer.setOpacity(opacity); + + for (var i = 0; i < 4; i++) { + layer.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0), new OpenLayers.Icon())); + } + + var itWorks = false; + for (var i = 0; i < layer.markers.length; i++) { + itWorks = parseFloat(layer.markers[i].icon.imageDiv.style.opacity) == opacity; + if (!itWorks) { + break; + } + } + t.ok(itWorks, "setOpacity change markers opacity"); + }