Allow source to be set with set method as well
This commit is contained in:
@@ -4,6 +4,7 @@ goog.require('goog.asserts');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.EventType');
|
||||
goog.require('goog.object');
|
||||
goog.require('ol.Object');
|
||||
goog.require('ol.layer.Base');
|
||||
goog.require('ol.layer.LayerProperty');
|
||||
|
||||
@@ -37,6 +38,10 @@ ol.layer.Layer = function(options) {
|
||||
*/
|
||||
this.sourceChangeKey_ = null;
|
||||
|
||||
goog.events.listen(this,
|
||||
ol.Object.getChangeEventType(ol.layer.LayerProperty.SOURCE),
|
||||
this.handleSourcePropertyChange_, false, this);
|
||||
|
||||
this.setSource(options.source);
|
||||
};
|
||||
goog.inherits(ol.layer.Layer, ol.layer.Base);
|
||||
@@ -109,6 +114,23 @@ ol.layer.Layer.prototype.handleSourceChange_ = function() {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
ol.layer.Layer.prototype.handleSourcePropertyChange_ = function() {
|
||||
if (!goog.isNull(this.sourceChangeKey_)) {
|
||||
goog.events.unlistenByKey(this.sourceChangeKey_);
|
||||
this.sourceChangeKey_ = null;
|
||||
}
|
||||
var source = this.getSource();
|
||||
if (!goog.isNull(source)) {
|
||||
this.sourceChangeKey_ = goog.events.listen(source,
|
||||
goog.events.EventType.CHANGE, this.handleSourceChange_, false, this);
|
||||
}
|
||||
this.changed();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Set the layer source.
|
||||
* @param {ol.source.Source} source The layer source.
|
||||
@@ -116,14 +138,7 @@ ol.layer.Layer.prototype.handleSourceChange_ = function() {
|
||||
* @api stable
|
||||
*/
|
||||
ol.layer.Layer.prototype.setSource = function(source) {
|
||||
if (!goog.isNull(this.sourceChangeKey_)) {
|
||||
goog.events.unlistenByKey(this.sourceChangeKey_);
|
||||
this.sourceChangeKey_ = null;
|
||||
}
|
||||
this.sourceChangeKey_ = goog.events.listen(source,
|
||||
goog.events.EventType.CHANGE, this.handleSourceChange_, false, this);
|
||||
this.set(ol.layer.LayerProperty.SOURCE, source);
|
||||
this.changed();
|
||||
};
|
||||
goog.exportProperty(
|
||||
ol.layer.Layer.prototype,
|
||||
|
||||
Reference in New Issue
Block a user