class EasyLayer {
/**
* 图层基类
* @constructor
*/
constructor() {
this.id = null
this.layer = null
this.map = null
this._geometries = []
}
/**
* 把图层添加到地图
* @param {EasyMap} easyMap 目标地图
*/
addTo(easyMap) {
this.map = easyMap
this.layer.addTo(easyMap.map)
}
/**
* 添加图形
* @param {Geom|Array.<Geom>} geometries 图形或图形数组
*/
addGeometry(geometries) {
if (!Array.isArray(geometries)) {
geometries = [geometries]
}
const _geometries = []
geometries.forEach(geom => {
this._geometries.push(geom)
_geometries.push(geom._geometry)
})
this.layer.addGeometry(_geometries)
}
/**
* 根据id获取图形
* @param {String} id 图形id
* @returns {*}
*/
getGeometryById(id) {
let geometry = false
this._geometries.forEach(e => {
if (id === e.id) {
geometry = e
}
})
return geometry
}
/**
* 获取图形,可以加过滤条件
* @param {Function} filter 过滤方法
* @param {Object} context 上下文
* @returns {*}
*/
getGeometries(filter = null, context = null) {
if (!filter) {
return this._geometries
}
const geometries = []
this._geometries.forEach(e => {
let filtered
if (context) {
filtered = filter.call(context, e);
} else {
filtered = filter(e);
}
if (filtered) {
geometries.push(e)
}
})
return geometries
}
/**
*显示图层
*
* @return {*}
* @memberof EasyLayer
*/
show(){
this.layer.show()
return this
}
/**
*隐藏图层
*
* @return {*}
* @memberof EasyLayer
*/
hide(){
this.layer.hide()
return this
}
/**
* 事件绑定
* @param {String} eventsOn 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
on(eventsOn, handler, context = null) {
this.layer.on(eventsOn, handler, context)
}
/**
* 事件绑定,别名
* @param {String} eventsOn 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
addMapEventListener(eventsOn, handler, context = null) {
this.layer.addEventListener(eventsOn, handler, context)
}
/**
* 单次事件绑定,调用一次后移除
* @param {String} eventTypes 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
once(eventTypes, handler, context = null) {
this.layer.once(eventTypes, handler, context)
}
/**
* 单次事件绑定,调用一次后移除,别名
* @param {String} eventTypes 要注册的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
addMapEventListenerOnce(eventTypes, handler, context = null) {
this.layer.once(eventTypes, handler, context)
}
/**
* 事件移除
* @param {String} eventsOff 要移除的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
un(eventsOff, handler, context = null) {
this.layer.off(eventsOff, handler, context)
}
/**
* 事件移除,别名
* @param {String} eventsOff 要移除的事件类型
* @param {*} handler 要调用的处理函数
* @param {*} context 处理程序的上下文
*/
removeMapEventListener(eventsOff, handler, context = null) {
this.layer.removeEventListener(eventsOff, handler, context)
}
/**
* 获取或设置options
* @param {String|Object} conf 配置,不传时,表示获取所有options;传字符串时与confValue搭配使用,把名为conf的配置项设置成congValue;传对象时内容为要设置的配置项的键值对,可设置多个;
* @param {*} confValue
*/
config(conf = null, confValue = null) {
if (arguments.length === 2) {
this.layer.config(conf, confValue)
} else if (arguments.length === 0) {
this.layer.config()
} else {
this.layer.config(conf)
}
}
/**
* 获取图层所在地图
* @returns {EasyMap}
*/
getMap() {
return this.map
}
/**
* 从地图上删除图层本身
* @returns {EasyLayer}
*/
remove() {
this.map.removeLayer(this)
return this
}
}
export default EasyLayer