diff --git a/src/ol/layer/layerbase.js b/src/ol/layer/layerbase.js index 1d154fd40a..3273e744be 100644 --- a/src/ol/layer/layerbase.js +++ b/src/ol/layer/layerbase.js @@ -67,11 +67,14 @@ ol.layer.LayerBase = function(options) { ol.Object.getChangeEventType(ol.layer.LayerProperty.HUE), ol.Object.getChangeEventType(ol.layer.LayerProperty.OPACITY), ol.Object.getChangeEventType(ol.layer.LayerProperty.SATURATION), - ol.Object.getChangeEventType(ol.layer.LayerProperty.VISIBLE), goog.events.EventType.LOAD ], this.handleLayerChange, false, this); + goog.events.listen(this, + ol.Object.getChangeEventType(ol.layer.LayerProperty.VISIBLE), + this.handleLayerVisibleChange, false, this); + }; goog.inherits(ol.layer.LayerBase, ol.Object); @@ -204,7 +207,19 @@ goog.exportProperty( * @protected */ ol.layer.LayerBase.prototype.handleLayerChange = function() { - this.dispatchChangeEvent(); + if (this.getVisible() && this.isReady()) { + this.dispatchChangeEvent(); + } +}; + + +/** + * @protected + */ +ol.layer.LayerBase.prototype.handleLayerVisibleChange = function() { + if (this.isReady()) { + this.dispatchChangeEvent(); + } }; diff --git a/src/ol/layer/layergroup.js b/src/ol/layer/layergroup.js index 163500305f..b93c0e40b2 100644 --- a/src/ol/layer/layergroup.js +++ b/src/ol/layer/layergroup.js @@ -66,6 +66,24 @@ ol.layer.LayerGroup = function(opt_options) { goog.inherits(ol.layer.LayerGroup, ol.layer.LayerBase); +/** + * @inheritDoc + */ +ol.layer.LayerGroup.prototype.handleLayerChange = function() { + if (this.getVisible()) { + this.dispatchChangeEvent(); + } +}; + + +/** + * @inheritDoc + */ +ol.layer.LayerGroup.prototype.handleLayerVisibleChange = function() { + this.dispatchChangeEvent(); +}; + + /** * @param {goog.events.Event} event Event. * @private