Listen for changes in layer renderers
This commit is contained in:
@@ -3,6 +3,9 @@ goog.provide('ol.webgl.Map');
|
|||||||
goog.require('goog.dispose');
|
goog.require('goog.dispose');
|
||||||
goog.require('goog.dom');
|
goog.require('goog.dom');
|
||||||
goog.require('goog.dom.TagName');
|
goog.require('goog.dom.TagName');
|
||||||
|
goog.require('goog.events');
|
||||||
|
goog.require('goog.events.Event');
|
||||||
|
goog.require('goog.events.EventType');
|
||||||
goog.require('goog.style');
|
goog.require('goog.style');
|
||||||
goog.require('goog.webgl');
|
goog.require('goog.webgl');
|
||||||
goog.require('ol.Layer');
|
goog.require('ol.Layer');
|
||||||
@@ -96,6 +99,12 @@ ol.webgl.Map = function(target, opt_values) {
|
|||||||
*/
|
*/
|
||||||
this.vertexShader_ = ol.webgl.Map.createVertexShader_();
|
this.vertexShader_ = ol.webgl.Map.createVertexShader_();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
* @type {Object.<number, null|number>}
|
||||||
|
*/
|
||||||
|
this.layerRendererChangeListenKeys_ = {};
|
||||||
|
|
||||||
if (goog.isDef(opt_values)) {
|
if (goog.isDef(opt_values)) {
|
||||||
this.setValues(opt_values);
|
this.setValues(opt_values);
|
||||||
}
|
}
|
||||||
@@ -262,6 +271,18 @@ ol.webgl.Map.prototype.handleLayerAdd = function(layer) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {goog.events.Event} event Event.
|
||||||
|
* @protected
|
||||||
|
*/
|
||||||
|
ol.webgl.Map.prototype.handleLayerRendererChange = function(event) {
|
||||||
|
var layerRenderer = /** @type {ol.LayerRenderer} */ (event.target);
|
||||||
|
if (layerRenderer.getLayer().getVisible()) {
|
||||||
|
this.redraw();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
@@ -363,3 +384,29 @@ ol.webgl.Map.prototype.redrawInternal = function() {
|
|||||||
return animate;
|
return animate;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
ol.webgl.Map.prototype.removeLayerRenderer = function(layer) {
|
||||||
|
var layerRenderer = goog.base(this, 'removeLayerRenderer', layer);
|
||||||
|
if (!goog.isNull(layerRenderer)) {
|
||||||
|
var key = goog.getUid(layer);
|
||||||
|
goog.events.unlistenByKey(this.layerRendererChangeListenKeys_[key]);
|
||||||
|
delete this.layerRendererChangeListenKeys_[key];
|
||||||
|
}
|
||||||
|
return layerRenderer;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
ol.webgl.Map.prototype.setLayerRenderer = function(layer, layerRenderer) {
|
||||||
|
goog.base(this, 'setLayerRenderer', layer, layerRenderer);
|
||||||
|
var key = goog.getUid(layer);
|
||||||
|
this.layerRendererChangeListenKeys_[key] = goog.events.listen(layerRenderer,
|
||||||
|
goog.events.EventType.CHANGE, this.handleLayerRendererChange, false,
|
||||||
|
this);
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user