Files
openlayers/src/ol/layer/layer.js

87 lines
1.7 KiB
JavaScript

goog.provide('ol.layer.Layer');
goog.require('goog.asserts');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('goog.object');
goog.require('ol.layer.Base');
goog.require('ol.source.Source');
/**
* @constructor
* @extends {ol.layer.Base}
* @param {ol.layer.LayerOptions} options Layer options.
* @todo stability experimental
*/
ol.layer.Layer = function(options) {
var baseOptions = /** @type {ol.layer.LayerOptions} */
(goog.object.clone(options));
delete baseOptions.source;
goog.base(this, baseOptions);
/**
* @private
* @type {ol.source.Source}
*/
this.source_ = options.source;
goog.events.listen(this.source_, goog.events.EventType.CHANGE,
this.handleSourceChange_, false, this);
};
goog.inherits(ol.layer.Layer, ol.layer.Base);
/**
* @inheritDoc
*/
ol.layer.Layer.prototype.getLayersArray = function(opt_array) {
var array = (goog.isDef(opt_array)) ? opt_array : [];
array.push(this);
return array;
};
/**
* @inheritDoc
*/
ol.layer.Layer.prototype.getLayerStatesArray = function(opt_obj) {
var obj = (goog.isDef(opt_obj)) ? opt_obj : {
layers: [],
layerStates: []
};
goog.asserts.assert(obj.layers.length === obj.layerStates.length);
obj.layers.push(this);
obj.layerStates.push(this.getLayerState());
return obj;
};
/**
* @return {ol.source.Source} Source.
* @todo stability experimental
*/
ol.layer.Layer.prototype.getSource = function() {
return this.source_;
};
/**
* @inheritDoc
*/
ol.layer.Layer.prototype.getSourceState = function() {
return this.getSource().getState();
};
/**
* @private
*/
ol.layer.Layer.prototype.handleSourceChange_ = function() {
this.dispatchChangeEvent();
};