Layer loads should be handled by LayerRenderers, not the Map

This commit is contained in:
Tom Payne
2012-07-28 16:25:57 +02:00
parent 7144e7ad0b
commit 90a4fe9625
3 changed files with 18 additions and 11 deletions
+10
View File
@@ -1,6 +1,7 @@
goog.provide('ol.LayerRenderer'); goog.provide('ol.LayerRenderer');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('ol.Layer'); goog.require('ol.Layer');
goog.require('ol.LayerProperty'); goog.require('ol.LayerProperty');
goog.require('ol.Object'); goog.require('ol.Object');
@@ -41,6 +42,9 @@ ol.LayerRenderer = function(map, layer) {
ol.Object.getChangedEventType(ol.LayerProperty.HUE), ol.Object.getChangedEventType(ol.LayerProperty.HUE),
this.handleLayerHueChange, false, this); this.handleLayerHueChange, false, this);
goog.events.listen(this.layer_, goog.events.EventType.LOAD,
this.handleLayerLoad, false, this);
goog.events.listen(this.layer_, goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.OPACITY), ol.Object.getChangedEventType(ol.LayerProperty.OPACITY),
this.handleLayerOpacityChange, false, this); this.handleLayerOpacityChange, false, this);
@@ -97,6 +101,12 @@ ol.LayerRenderer.prototype.handleLayerHueChange = goog.nullFunction;
ol.LayerRenderer.prototype.handleLayerOpacityChange = goog.nullFunction; ol.LayerRenderer.prototype.handleLayerOpacityChange = goog.nullFunction;
/**
* @protected
*/
ol.LayerRenderer.prototype.handleLayerLoad = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
-11
View File
@@ -511,15 +511,6 @@ ol.Map.prototype.handleLayerAdd = function(layer) {
} }
var layerRenderer = this.createLayerRenderer(layer); var layerRenderer = this.createLayerRenderer(layer);
this.setLayerRenderer(layer, layerRenderer); this.setLayerRenderer(layer, layerRenderer);
goog.events.listen(layer, goog.events.EventType.LOAD, this.handleLayerLoad,
false, this);
};
/**
*/
ol.Map.prototype.handleLayerLoad = function() {
this.render();
}; };
@@ -528,8 +519,6 @@ ol.Map.prototype.handleLayerLoad = function() {
* @protected * @protected
*/ */
ol.Map.prototype.handleLayerRemove = function(layer) { ol.Map.prototype.handleLayerRemove = function(layer) {
goog.events.unlisten(layer, goog.events.EventType.LOAD, this.handleLayerLoad,
false, this);
this.removeLayerRenderer(layer); this.removeLayerRenderer(layer);
}; };
+8
View File
@@ -80,6 +80,14 @@ ol.webgl.LayerRenderer.prototype.handleLayerHueChange = function() {
}; };
/**
* @inheritDoc
*/
ol.webgl.LayerRenderer.prototype.handleLayerLoad = function() {
this.dispatchChangeEvent();
};
/** /**
* @inheritDoc * @inheritDoc
*/ */