diff --git a/lib/OpenLayers/Control/LayerSwitcher.js b/lib/OpenLayers/Control/LayerSwitcher.js index 0327639788..8ad77ff677 100644 --- a/lib/OpenLayers/Control/LayerSwitcher.js +++ b/lib/OpenLayers/Control/LayerSwitcher.js @@ -67,6 +67,7 @@ OpenLayers.Control.LayerSwitcher.prototype = this.map.events.register("addlayer", this, this.redraw); this.map.events.register("removelayer", this, this.redraw); + this.map.events.register("changelayer", this, this.redraw); return this.redraw(); }, diff --git a/lib/OpenLayers/Layer.js b/lib/OpenLayers/Layer.js index 7150822aa6..3559b1e008 100644 --- a/lib/OpenLayers/Layer.js +++ b/lib/OpenLayers/Layer.js @@ -168,11 +168,16 @@ OpenLayers.Layer.prototype = { * @param {bool} visible */ setVisibility: function(visible) { - this.div.style.display = (visible) ? "block" : "none"; - if ((visible) && (this.map != null)) { - var extent = this.map.getExtent(); - if (extent != null) { - this.moveTo(this.map.getExtent()); + if (visible != this.getVisibility()) { + this.div.style.display = (visible) ? "block" : "none"; + if (this.map != null) { + if (visible) { + var extent = this.map.getExtent(); + if (extent != null) { + this.moveTo(this.map.getExtent()); + } + } + this.map.events.triggerEvent("changelayer"); } } }, diff --git a/lib/OpenLayers/Map.js b/lib/OpenLayers/Map.js index f4697ea139..021b6b608b 100644 --- a/lib/OpenLayers/Map.js +++ b/lib/OpenLayers/Map.js @@ -22,8 +22,8 @@ OpenLayers.Map.prototype = { * * @type Array */ EVENT_TYPES: [ - "addlayer", "removelayer", "movestart", "move", "moveend", - "zoomend", "layerchanged", "popupopen", "popupclose", + "addlayer", "removelayer", "changelayer", "movestart", "move", + "moveend", "zoomend", "layerchanged", "popupopen", "popupclose", "addmarker", "removemarker", "clearmarkers", "mouseover", "mouseout", "mousemove", "dragstart", "drag", "dragend", "changebaselayer"],