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

View File

@@ -1,6 +1,7 @@
goog.provide('ol.LayerRenderer');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('ol.Layer');
goog.require('ol.LayerProperty');
goog.require('ol.Object');
@@ -41,6 +42,9 @@ ol.LayerRenderer = function(map, layer) {
ol.Object.getChangedEventType(ol.LayerProperty.HUE),
this.handleLayerHueChange, false, this);
goog.events.listen(this.layer_, goog.events.EventType.LOAD,
this.handleLayerLoad, false, this);
goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.OPACITY),
this.handleLayerOpacityChange, false, this);
@@ -97,6 +101,12 @@ ol.LayerRenderer.prototype.handleLayerHueChange = goog.nullFunction;
ol.LayerRenderer.prototype.handleLayerOpacityChange = goog.nullFunction;
/**
* @protected
*/
ol.LayerRenderer.prototype.handleLayerLoad = goog.nullFunction;
/**
* @protected
*/

View File

@@ -511,15 +511,6 @@ ol.Map.prototype.handleLayerAdd = function(layer) {
}
var layerRenderer = this.createLayerRenderer(layer);
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
*/
ol.Map.prototype.handleLayerRemove = function(layer) {
goog.events.unlisten(layer, goog.events.EventType.LOAD, this.handleLayerLoad,
false, this);
this.removeLayerRenderer(layer);
};

View File

@@ -80,6 +80,14 @@ ol.webgl.LayerRenderer.prototype.handleLayerHueChange = function() {
};
/**
* @inheritDoc
*/
ol.webgl.LayerRenderer.prototype.handleLayerLoad = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/