소스 검색

add tileset event

tags/3.2.0
cavencj 2 년 전
부모
커밋
13af4808ae
5개의 변경된 파일151개의 추가작업 그리고 15개의 파일을 삭제
  1. 13
    0
      src/modules/event/EventType.js
  2. 1
    0
      src/modules/event/index.js
  3. 21
    11
      src/modules/event/type/MouseEvent.js
  4. 85
    0
      src/modules/event/type/TilesetEvent.js
  5. 31
    4
      src/modules/overlay/model/Tileset.js

+ 13
- 0
src/modules/event/EventType.js 파일 보기

@@ -66,6 +66,18 @@ const OverlayEventType = {
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 LayerEventType = {
@@ -113,6 +125,7 @@ export {
LayerGroupEventType,
LayerEventType,
OverlayEventType,
TileSetEventType,
TrackEventType,
PathEventType,
PlotEventType,

+ 1
- 0
src/modules/event/index.js 파일 보기

@@ -18,6 +18,7 @@ export { default as SceneEvent } from './type/SceneEvent'
export { default as LayerGroupEvent } from './type/LayerGroupEvent'
export { default as LayerEvent } from './type/LayerEvent'
export { default as OverlayEvent } from './type/OverlayEvent'
export { default as TilesetEvent } from './type/TilesetEvent'

/**
* animation

+ 21
- 11
src/modules/event/type/MouseEvent.js 파일 보기

@@ -151,7 +151,7 @@ class MouseEvent extends Event {
overlayId = target.primitive.overlayId
}

// for Primitve
// for Primitive
else if (target?.primitive) {
overlayId = target.primitive.overlayId
}
@@ -301,8 +301,10 @@ class MouseEvent extends Event {
if (!movement?.position) {
return false
}
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.CLICK, mouseInfo)
this._raiseEvent(
MouseEventType.CLICK,
this._getMouseInfo(movement.position)
)
}

/**
@@ -315,8 +317,10 @@ class MouseEvent extends Event {
if (!movement?.position) {
return false
}
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.DB_CLICK, mouseInfo)
this._raiseEvent(
MouseEventType.DB_CLICK,
this._getMouseInfo(movement.position)
)
}

/**
@@ -329,8 +333,10 @@ class MouseEvent extends Event {
if (!movement?.position) {
return false
}
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.RIGHT_CLICK, mouseInfo)
this._raiseEvent(
MouseEventType.RIGHT_CLICK,
this._getMouseInfo(movement.position)
)
}

/**
@@ -368,8 +374,10 @@ class MouseEvent extends Event {
if (!movement?.position) {
return false
}
let mouseInfo = this._getMouseInfo(movement.position)
this._raiseEvent(MouseEventType.LEFT_DOWN, mouseInfo)
this._raiseEvent(
MouseEventType.LEFT_DOWN,
this._getMouseInfo(movement.position)
)
}

/**
@@ -390,8 +398,10 @@ class MouseEvent extends Event {
if (!movement?.position) {
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 파일 보기

@@ -0,0 +1,85 @@
/**
* @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 파일 보기

@@ -6,11 +6,13 @@ import { Cesium } from '../../../namespace'
import Overlay from '../Overlay'
import Parse from '../../parse/Parse'
import State from '../../state/State'
import { TilesetEvent } from '../../event'

class Tileset extends Overlay {
constructor(url, options = {}) {
super()
this._delegate = Cesium.Cesium3DTileset.fromUrl(url, options)
this._tilesetEvent = new TilesetEvent()
this._tileVisibleCallback = undefined
this._properties = undefined
this._state = State.INITIALIZED
@@ -33,10 +35,9 @@ class Tileset extends Overlay {
*/
_bindVisibleEvent() {
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)
})
}

/**
@@ -250,6 +251,32 @@ class Tileset extends Overlay {
}
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')

Loading…
취소
저장