Track changes to layers in the map

This commit is contained in:
Tom Payne
2013-04-16 18:31:59 +02:00
parent 07fe17924b
commit bc10446b0e
2 changed files with 51 additions and 59 deletions

View File

@@ -1,7 +1,6 @@
goog.provide('ol.renderer.Map');
goog.require('goog.Disposable');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.dispose');
goog.require('goog.events');
@@ -9,10 +8,7 @@ goog.require('goog.events.EventType');
goog.require('goog.functions');
goog.require('goog.object');
goog.require('goog.vec.Mat4');
goog.require('ol.CollectionEvent');
goog.require('ol.CollectionEventType');
goog.require('ol.FrameState');
goog.require('ol.Object');
goog.require('ol.layer.Layer');
goog.require('ol.renderer.Layer');
@@ -46,20 +42,6 @@ ol.renderer.Map = function(container, map) {
*/
this.layerRenderers_ = {};
/**
* @private
* @type {?number}
*/
this.mapLayersChangedListenerKey_ = goog.events.listen(
map, ol.Object.getChangedEventType(ol.MapProperty.LAYERS),
this.handleLayersChanged_, false, this);
/**
* @private
* @type {Array.<?number>}
*/
this.layersListenerKeys_ = null;
/**
* @private
* @type {Object.<string, ?number>}
@@ -119,7 +101,6 @@ ol.renderer.Map.prototype.disposeInternal = function() {
goog.object.forEach(this.layerRenderers_, function(layerRenderer) {
goog.dispose(layerRenderer);
});
goog.events.unlistenByKey(this.mapLayersChangedListenerKey_);
goog.object.forEach(
this.layerRendererChangeListenKeys_, goog.events.unlistenByKey);
goog.base(this, 'disposeInternal');
@@ -178,46 +159,6 @@ ol.renderer.Map.prototype.handleLayerRendererChange_ = function(event) {
};
/**
* @param {ol.CollectionEvent} collectionEvent Collection event.
* @private
*/
ol.renderer.Map.prototype.handleLayersAdd_ = function(collectionEvent) {
this.getMap().render();
};
/**
* @param {goog.events.Event} event Event.
* @private
*/
ol.renderer.Map.prototype.handleLayersChanged_ = function(event) {
if (!goog.isNull(this.layersListenerKeys_)) {
goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey);
this.layersListenerKeys_ = null;
}
var layers = this.getMap().getLayers();
if (goog.isDefAndNotNull(layers)) {
this.layersListenerKeys_ = [
goog.events.listen(layers, ol.CollectionEventType.ADD,
this.handleLayersAdd_, false, this),
goog.events.listen(layers, ol.CollectionEventType.REMOVE,
this.handleLayersRemove_, false, this)
];
}
this.getMap().render();
};
/**
* @param {ol.CollectionEvent} collectionEvent Collection event.
* @private
*/
ol.renderer.Map.prototype.handleLayersRemove_ = function(collectionEvent) {
this.getMap().render();
};
/**
* @param {string} layerKey Layer key.
* @return {ol.renderer.Layer} Layer renderer.