瀏覽代碼

add layer event #53

tags/2.4.1
Caven Chen 4 年之前
父節點
當前提交
bcf94fcac9
共有 3 個檔案被更改,包括 48 行新增28 行删除
  1. 39
    11
      modules/layer/Layer.js
  2. 2
    2
      modules/overlay/Overlay.js
  3. 7
    15
      modules/viewer/Viewer.js

+ 39
- 11
modules/layer/Layer.js 查看文件

@@ -22,7 +22,6 @@ class Layer {
this._layerEvent = new LayerEvent()
this._layerEvent.on(LayerEventType.ADD, this._onAdd, this)
this._layerEvent.on(LayerEventType.REMOVE, this._onRemove, this)
this._state = undefined
}

get layerId() {
@@ -128,12 +127,9 @@ class Layer {
* @private
*/
_addOverlay(overlay) {
if (
overlay?.overlayEvent &&
!this._cache.hasOwnProperty(overlay.overlayId)
) {
if (!this._cache.hasOwnProperty(overlay.overlayId)) {
this._cache[overlay.overlayId] = overlay
this._delegate && overlay.overlayEvent.fire(OverlayEventType.ADD, this)
this._delegate && overlay.fire(OverlayEventType.ADD, this)
if (this._state === State.CLEARED) {
this._state = State.ADDED
}
@@ -146,11 +142,8 @@ class Layer {
* @private
*/
_removeOverlay(overlay) {
if (
overlay?.overlayEvent &&
this._cache.hasOwnProperty(overlay.overlayId)
) {
this._delegate && overlay.overlayEvent.fire(OverlayEventType.REMOVE, this)
if (this._cache.hasOwnProperty(overlay.overlayId)) {
this._delegate && overlay.fire(OverlayEventType.REMOVE, this)
delete this._cache[overlay.overlayId]
}
}
@@ -288,6 +281,41 @@ class Layer {
*/
setStyle(style) {}

/**
* Subscribe event
* @param type
* @param callback
* @param context
* @returns {Layer}
*/
on(type, callback, context) {
this._layerEvent.on(type, callback, context || this)
return this
}

/**
* Unsubscribe event
* @param type
* @param callback
* @param context
* @returns {Layer}
*/
off(type, callback, context) {
this._layerEvent.off(type, callback, context || this)
return this
}

/**
* Trigger subscription event
* @param type
* @param params
* @returns {Layer}
*/
fire(type, params) {
this._layerEvent.fire(type, params)
return this
}

/**
* Registers Type
* @param type

+ 2
- 2
modules/overlay/Overlay.js 查看文件

@@ -22,8 +22,8 @@ class Overlay {
this._allowDrillPicking = false
this._contextMenu = []
this._overlayEvent = new OverlayEvent()
this.on(OverlayEventType.ADD, this._onAdd, this)
this.on(OverlayEventType.REMOVE, this._onRemove, this)
this._overlayEvent.on(OverlayEventType.ADD, this._onAdd, this)
this._overlayEvent.on(OverlayEventType.REMOVE, this._onRemove, this)
}

get overlayId() {

+ 7
- 15
modules/viewer/Viewer.js 查看文件

@@ -213,12 +213,10 @@ class Viewer {
* @private
*/
_addLayer(layer) {
if (layer?.layerEvent) {
!this._layerCache[layer.type] && (this._layerCache[layer.type] = {})
if (!Object(this._layerCache[layer.type]).hasOwnProperty(layer.id)) {
layer.layerEvent.fire(LayerEventType.ADD, this)
this._layerCache[layer.type][layer.id] = layer
}
!this._layerCache[layer.type] && (this._layerCache[layer.type] = {})
if (!Object(this._layerCache[layer.type]).hasOwnProperty(layer.id)) {
layer.fire(LayerEventType.ADD, this)
this._layerCache[layer.type][layer.id] = layer
}
}

@@ -227,11 +225,8 @@ class Viewer {
* @private
*/
_removeLayer(layer) {
if (
layer?.layerEvent &&
Object(this._layerCache[layer.type]).hasOwnProperty(layer.id)
) {
layer.layerEvent.fire(LayerEventType.REMOVE, this)
if (Object(this._layerCache[layer.type]).hasOwnProperty(layer.id)) {
layer.fire(LayerEventType.REMOVE, this)
delete this._layerCache[layer.type][layer.id]
}
}
@@ -444,10 +439,7 @@ class Viewer {
* @returns {boolean}
*/
hasLayer(layer) {
return (
layer?.layerEvent &&
Object(this._layerCache[layer.type]).hasOwnProperty(layer.id)
)
return Object(this._layerCache[layer.type]).hasOwnProperty(layer.id)
}

/**

Loading…
取消
儲存