From e3406bf0950b9ab95f4b48b22406a7a7a9e74ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Junod?= Date: Wed, 19 Dec 2007 15:00:49 +0000 Subject: [PATCH] OpenLayers.Layer.Markers - propagate layer's opacity to the markers. Thanks ahughes for the bug report and crschmidt for review and advices. (Closes #1114) git-svn-id: http://svn.openlayers.org/trunk/openlayers@5509 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Layer.js | 6 ++++++ lib/OpenLayers/Layer/Markers.js | 22 +++++++++++++++++++++- tests/Layer/test_Markers.html | 26 ++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) 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"); + }