浏览代码

add tileset event

tags/3.2.0
cavencj 2 年前
父节点
当前提交
13af4808ae

+ 13
- 0
src/modules/event/EventType.js 查看文件

POSITION_UPDATE: 'positionUpdate', POSITION_UPDATE: 'positionUpdate',
} }


const ModelEventType = {}

const TileSetEventType = {
INITIAL_TILES_LOADED: 'initialTilesLoaded',
ALL_TILES_LOADED: 'allTilesLoaded ',
LOAD_PROGRESS: 'loadProgress ',
TILE_FAILED: 'tileFailed ',
TILE_LOAD: 'tileLoad',
TILE_UNLOAD: 'tileUnload',
TILE_VISIBLE: 'tileVisible',
}

const LayerGroupEventType = BaseEventType const LayerGroupEventType = BaseEventType


const LayerEventType = { const LayerEventType = {
LayerGroupEventType, LayerGroupEventType,
LayerEventType, LayerEventType,
OverlayEventType, OverlayEventType,
TileSetEventType,
TrackEventType, TrackEventType,
PathEventType, PathEventType,
PlotEventType, PlotEventType,

+ 1
- 0
src/modules/event/index.js 查看文件

export { default as LayerGroupEvent } from './type/LayerGroupEvent' export { default as LayerGroupEvent } from './type/LayerGroupEvent'
export { default as LayerEvent } from './type/LayerEvent' export { default as LayerEvent } from './type/LayerEvent'
export { default as OverlayEvent } from './type/OverlayEvent' export { default as OverlayEvent } from './type/OverlayEvent'
export { default as TilesetEvent } from './type/TilesetEvent'


/** /**
* animation * animation

+ 21
- 11
src/modules/event/type/MouseEvent.js 查看文件

overlayId = target.primitive.overlayId overlayId = target.primitive.overlayId
} }


// for Primitve
// for Primitive
else if (target?.primitive) { else if (target?.primitive) {
overlayId = target.primitive.overlayId overlayId = target.primitive.overlayId
} }
if (!movement?.position) { if (!movement?.position) {
return false return false
} }
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.CLICK, mouseInfo)
this._raiseEvent(
MouseEventType.CLICK,
this._getMouseInfo(movement.position)
)
} }


/** /**
if (!movement?.position) { if (!movement?.position) {
return false return false
} }
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.DB_CLICK, mouseInfo)
this._raiseEvent(
MouseEventType.DB_CLICK,
this._getMouseInfo(movement.position)
)
} }


/** /**
if (!movement?.position) { if (!movement?.position) {
return false return false
} }
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.RIGHT_CLICK, mouseInfo)
this._raiseEvent(
MouseEventType.RIGHT_CLICK,
this._getMouseInfo(movement.position)
)
} }


/** /**
if (!movement?.position) { if (!movement?.position) {
return false return false
} }
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.LEFT_DOWN, mouseInfo)
this._raiseEvent(
MouseEventType.LEFT_DOWN,
this._getMouseInfo(movement.position)
)
} }


/** /**
if (!movement?.position) { if (!movement?.position) {
return false return false
} }
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.RIGHT_DOWN, mouseInfo)
this._raiseEvent(
MouseEventType.RIGHT_DOWN,
this._getMouseInfo(movement.position)
)
} }


/** /**

+ 85
- 0
src/modules/event/type/TilesetEvent.js 查看文件

/**
* @Author : Caven Chen
*/
import { TileSetEventType } from '../EventType'
import Event from '../Event'

class TilesetEvent extends Event {
constructor(tileset) {
super(TileSetEventType)
this._tileset = tileset
}

/**
*
* @param type
* @param callback
* @param context
*/
on(type, callback, context) {
this._tileset.then((tileset) => {
switch (type) {
case TileSetEventType.INITIAL_TILES_LOADED:
tileset.initialTilesLoaded.addEventListener(callback, context || this)
break
case TileSetEventType.ALL_TILES_LOADED:
tileset.allTilesLoaded.addEventListener(callback, context || this)
break
case TileSetEventType.LOAD_PROGRESS:
tileset.loadProgress.addEventListener(callback, context || this)
break
case TileSetEventType.TILE_FAILED:
tileset.tileFailed.addEventListener(callback, context || this)
break
case TileSetEventType.TILE_LOAD:
tileset.tileLoad.addEventListener(callback, context || this)
break
case TileSetEventType.TILE_UNLOAD:
tileset.tileUnload.addEventListener(callback, context || this)
break
case TileSetEventType.TILE_VISIBLE:
tileset.tileVisible.addEventListener(callback, context || this)
break
default:
break
}
})
return null
}

off(type, callback, context) {
this._tileset.then((tileset) => {
switch (type) {
case TileSetEventType.INITIAL_TILES_LOADED:
tileset.initialTilesLoaded.removeEventListener(
callback,
context || this
)
break
case TileSetEventType.ALL_TILES_LOADED:
tileset.allTilesLoaded.removeEventListener(callback, context || this)
break
case TileSetEventType.LOAD_PROGRESS:
tileset.loadProgress.removeEventListener(callback, context || this)
break
case TileSetEventType.TILE_FAILED:
tileset.tileFailed.removeEventListener(callback, context || this)
break
case TileSetEventType.TILE_LOAD:
tileset.tileLoad.removeEventListener(callback, context || this)
break
case TileSetEventType.TILE_UNLOAD:
tileset.tileUnload.removeEventListener(callback, context || this)
break
case TileSetEventType.TILE_VISIBLE:
tileset.tileVisible.removeEventListener(callback, context || this)
break
default:
break
}
})
return true
}
}

export default TilesetEvent

+ 31
- 4
src/modules/overlay/model/Tileset.js 查看文件

import Overlay from '../Overlay' import Overlay from '../Overlay'
import Parse from '../../parse/Parse' import Parse from '../../parse/Parse'
import State from '../../state/State' import State from '../../state/State'
import { TilesetEvent } from '../../event'


class Tileset extends Overlay { class Tileset extends Overlay {
constructor(url, options = {}) { constructor(url, options = {}) {
super() super()
this._delegate = Cesium.Cesium3DTileset.fromUrl(url, options) this._delegate = Cesium.Cesium3DTileset.fromUrl(url, options)
this._tilesetEvent = new TilesetEvent()
this._tileVisibleCallback = undefined this._tileVisibleCallback = undefined
this._properties = undefined this._properties = undefined
this._state = State.INITIALIZED this._state = State.INITIALIZED
*/ */
_bindVisibleEvent() { _bindVisibleEvent() {
this._tileVisibleCallback && this._tileVisibleCallback() this._tileVisibleCallback && this._tileVisibleCallback()
this._tileVisibleCallback = this._delegate.tileVisible.addEventListener(
this._updateTile,
this
)
this._tileVisibleCallback = this._delegate.then((tileset) => {
tileset.tileVisible.addEventListener(this._updateTile, this)
})
} }


/** /**
} }
return this return this
} }

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

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


Overlay.registerType('tileset') Overlay.registerType('tileset')

正在加载...
取消
保存