map renderer unregisters listeners on dispose
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
// FIXME unregister listeners when disposed
|
|
||||||
|
|
||||||
goog.provide('ol.MapRenderer');
|
goog.provide('ol.MapRenderer');
|
||||||
|
|
||||||
goog.require('goog.Disposable');
|
goog.require('goog.Disposable');
|
||||||
@@ -57,11 +55,6 @@ ol.MapRenderer = function(target, map) {
|
|||||||
*/
|
*/
|
||||||
this.freezeRenderingCount_ = 0;
|
this.freezeRenderingCount_ = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @type {Array.<number>}
|
|
||||||
*/
|
|
||||||
this.layersListenerKeys_ = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @protected
|
* @protected
|
||||||
@@ -69,29 +62,42 @@ ol.MapRenderer = function(target, map) {
|
|||||||
*/
|
*/
|
||||||
this.layerRenderers = {};
|
this.layerRenderers = {};
|
||||||
|
|
||||||
goog.events.listen(map,
|
/**
|
||||||
ol.Object.getChangedEventType(ol.MapProperty.BACKGROUND_COLOR),
|
* @private
|
||||||
this.handleBackgroundColorChanged, false, this);
|
* @type {Array.<number>}
|
||||||
|
*/
|
||||||
|
this.layersListenerKeys_ = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @type {Array.<number>}
|
||||||
|
*/
|
||||||
|
this.mapListenerKeys_ = [
|
||||||
|
goog.events.listen(
|
||||||
|
map, ol.Object.getChangedEventType(ol.MapProperty.BACKGROUND_COLOR),
|
||||||
|
this.handleBackgroundColorChanged, false, this),
|
||||||
|
|
||||||
goog.events.listen(
|
goog.events.listen(
|
||||||
map, ol.Object.getChangedEventType(ol.MapProperty.CENTER),
|
map, ol.Object.getChangedEventType(ol.MapProperty.CENTER),
|
||||||
this.handleCenterChanged, false, this);
|
this.handleCenterChanged, false, this),
|
||||||
|
|
||||||
goog.events.listen(
|
goog.events.listen(
|
||||||
map, ol.Object.getChangedEventType(ol.MapProperty.LAYERS),
|
map, ol.Object.getChangedEventType(ol.MapProperty.LAYERS),
|
||||||
this.handleLayersChanged, false, this);
|
this.handleLayersChanged, false, this),
|
||||||
|
|
||||||
goog.events.listen(
|
goog.events.listen(
|
||||||
map, ol.Object.getChangedEventType(ol.MapProperty.RESOLUTION),
|
map, ol.Object.getChangedEventType(ol.MapProperty.RESOLUTION),
|
||||||
this.handleResolutionChanged, false, this);
|
this.handleResolutionChanged, false, this),
|
||||||
|
|
||||||
goog.events.listen(
|
goog.events.listen(
|
||||||
map, ol.Object.getChangedEventType(ol.MapProperty.ROTATION),
|
map, ol.Object.getChangedEventType(ol.MapProperty.ROTATION),
|
||||||
this.handleRotationChanged, false, this);
|
this.handleRotationChanged, false, this),
|
||||||
|
|
||||||
goog.events.listen(
|
goog.events.listen(
|
||||||
map, ol.Object.getChangedEventType(ol.MapProperty.SIZE),
|
map, ol.Object.getChangedEventType(ol.MapProperty.SIZE),
|
||||||
this.handleSizeChanged, false, this);
|
this.handleSizeChanged, false, this)
|
||||||
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
goog.inherits(ol.MapRenderer, goog.Disposable);
|
goog.inherits(ol.MapRenderer, goog.Disposable);
|
||||||
|
|
||||||
@@ -103,6 +109,8 @@ ol.MapRenderer.prototype.disposeInternal = function() {
|
|||||||
goog.object.forEach(this.layerRenderers, function(layerRenderer) {
|
goog.object.forEach(this.layerRenderers, function(layerRenderer) {
|
||||||
goog.dispose(layerRenderer);
|
goog.dispose(layerRenderer);
|
||||||
});
|
});
|
||||||
|
goog.array.forEach(this.mapListenerKeys_, goog.events.unlistenByKey);
|
||||||
|
goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey);
|
||||||
goog.base(this, 'disposeInternal');
|
goog.base(this, 'disposeInternal');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user