Cesium-Examples/examples/cesiumEx/ocean/layers/AbsLayerObj.js

99 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2025-03-11 08:25:45 +00:00
class AbsLayerObj {
constructor(config = {}) {
this._config = config
this._visible = false
this._onload = false
this._islive = true
this._id = config.id ? config.id : `${new Date().getTime()}`
}
get id() {
return this._id
}
set id(val) {
this._id = val
}
get config() {
return this._config
}
set config(_config) {
this._config = _config
}
get visible() {
return this._visible
}
set visible(bool) {
if (this._visible == bool) return
if (bool) {
this.draw({})
} else {
this.remove(false)
}
this._visible = bool
}
get islive() {
return _islive
}
load() {
throw new Error('子类必须重写父类的draw方法')
}
addToMap(map, option = {}) {
this.add(map, option)
}
add(map, option) {
this.map = this.map ? this.map : map
if (!this._islive) return console.log('图层已被移除,无法继续加载')
this.draw(option)
this._visible = true
this._onload = true
// this.emit('add')
}
draw() {
throw new Error('子类必须重写父类的draw方法')
}
remove(bool = true) {
if (!this._islive) return console.log('图层已被移除')
// if (this.dataModule && this.dataModule.cancel) this.dataModule.cancel()
if (this.map) this.clean()
this._visible = false
this._onload = false
if (bool) {
this._islive = false
}
// this.emit('remove')
}
clean() {
throw new Error('子类必须重写父类的clean方法')
}
location() {
throw new Error('子类必须重写父类的location方法')
}
// on(key, func) {
// this._events.on(key, func)
// }
// un(key, func) {
// this._events.un(key, func)
// }
// emit() {
// this._events.emit(arguments[0], arguments[1])
// }
}
export default AbsLayerObj