/**
* 图层基础类
* @class
*/
class Layer {
layers = []
/**
* Layer类的构造函数,会把所有用户参数挂到layer对象上
* @param {object} config - 用户构造函数配置
*/
constructor(config) {
var _this = this;
this._userConfig = config;
for (var x in config) {
this[x] = config[x]
}
}
/**
* 事件监听,用法同jQuery.on
*/
on(type, listener) {
if (this._listeners === undefined) this._listeners = {};
var listeners = this._listeners;
if (listeners[type] === undefined) {
listeners[type] = [];
}
if (listeners[type].indexOf(listener) === - 1) {
listeners[type].push(listener);
}
}
/**
* 触发事件
* @example
* this.fire("change",event)
*/
fire(type, event) {
if (this._listeners === undefined) return;
var listeners = this._listeners;
var listenerArray = listeners[type];
if (listenerArray !== undefined) {
var array = listenerArray.slice(0);
for (var i = 0, l = array.length; i < l; i++) {
array[i].call(this, event);
}
}
}
/**
* 关闭事件
* @example
* this.off('change',onChange)
*/
off(type, listener) {
if (this._listeners === undefined) return;
var listeners = this._listeners;
var listenerArray = listeners[type];
if (listenerArray !== undefined) {
if (listener) {
var index = listenerArray.indexOf(listener);
if (index !== - 1) {
listenerArray.splice(index, 1);
}
} else {
this._listeners[type] = [];
}
}
}
initConfig(config) {
}
/**
* 地图添加图层时调用,由子类实现
* @param {Map} map - PigeonGL.Map实例
*/
onAdd(map) {
this.pigeonMap = map;
}
/**
* 地图每帧调用该函数
*/
update() {
}
/**
* 移除图层时调用
*/
onRemove() {
if (this._listeners) {
this._listeners = []
}
}
/**
* 添加图层
* @param {Layer} layer - 图层
*/
addLayer(layer) {
layer.id = ++this._layerid;
this.layers.push(layer);
layer.onAdd(this); //初始化layer
}
/**
* 删除图层
* @param {Layer} layer - 图层
*/
removeLayer(layer) {
for (let x in this.layers) {
if (this.layers[x].id == layer.id) {
this.layers[x].onRemove();
this.layers.splice(x, 1);
return;
}
}
}
/**
* 获取图层通过id
*/
getLayerById(id) {
for (let i = 0; i < this.layers.length; i++) {
if (this.layer.id === id) return layer;
}
}
}
export default Layer;