| @@ -1,5 +1,12 @@ | |||
| # 更新 | |||
| ## 1.5.2 | |||
| ### 2020-5-15 | |||
| > 1. 修改鼠标事件的类型 | |||
| > 2. 添加覆盖物的鼠标移除和移入的事件 | |||
| ## 1.5.1 | |||
| ### 2020-5-12 | |||
| @@ -1,6 +1,6 @@ | |||
| { | |||
| "name": "@dvgis/dc-sdk", | |||
| "version": "1.5.1", | |||
| "version": "1.5.2", | |||
| "description": " The SDK is a secondary development based on the open source project Cesium, which optimizes some operations of Cesium and enables developers to quickly develop 3D applications through the framework.", | |||
| "main": "index.js", | |||
| "repository": "https://github.com/Digital-Visual/dc-sdk.git", | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-04-22 09:44:30 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-12 19:58:35 | |||
| * @Last Modified time: 2020-05-15 09:00:52 | |||
| */ | |||
| import { initMixin, initUse } from './global-api' | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-05-09 13:19:53 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-12 09:27:35 | |||
| * @Last Modified time: 2020-05-15 09:00:29 | |||
| */ | |||
| import { DomUtil, Util } from './utils' | |||
| @@ -10,12 +10,13 @@ import { MouseEventType, SceneEventType, Event } from './event' | |||
| import { Layer, LayerType } from './layer' | |||
| import { Overlay, OverlayType } from './overlay' | |||
| import ImageryType from './imagery/ImageryType' | |||
| import WidgetType from './widget/WidgetType' | |||
| import State from './state/State' | |||
| import Position from './position/Position' | |||
| import Transform from './transform/Transform' | |||
| import Parse from './parse/Parse' | |||
| DC.mixin({ | |||
| const base = { | |||
| DomUtil, | |||
| Util, | |||
| State, | |||
| @@ -25,6 +26,7 @@ DC.mixin({ | |||
| OverlayType, | |||
| MouseEventType, | |||
| SceneEventType, | |||
| WidgetType, | |||
| Layer, | |||
| Overlay, | |||
| Position, | |||
| @@ -32,4 +34,6 @@ DC.mixin({ | |||
| T: Transform, | |||
| Parse, | |||
| P: Parse | |||
| }) | |||
| } | |||
| DC.mixin(base) | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2019-12-27 17:18:52 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-12 00:45:45 | |||
| * @Last Modified time: 2020-05-15 09:01:23 | |||
| */ | |||
| import ImageryLayerFactory from './imagery/ImageryLayerFactory' | |||
| @@ -40,10 +40,11 @@ Cesium.Math.distance = distance | |||
| Cesium.Math.heading = heading | |||
| Cesium.Math.isBetween = isBetween | |||
| DC.mixin({ | |||
| const core = { | |||
| ImageryLayerFactory, | |||
| TerrainFactory, | |||
| Viewer, | |||
| World: Viewer, | |||
| GeoJsonLayer, | |||
| HtmlLayer, | |||
| LabelLayer, | |||
| @@ -58,7 +59,8 @@ DC.mixin({ | |||
| Polyline, | |||
| Polygon, | |||
| Model, | |||
| Tileset | |||
| }) | |||
| Tileset, | |||
| Math: Cesium.Math | |||
| } | |||
| DC.Math = Cesium.Math | |||
| DC.mixin(core) | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-04-10 17:02:28 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-11 23:20:10 | |||
| * @Last Modified time: 2020-05-15 13:46:18 | |||
| */ | |||
| const { Cesium } = DC.Namespace | |||
| @@ -19,14 +19,23 @@ const MouseEventType = { | |||
| MOUSE_MOVE: Cesium.ScreenSpaceEventType.MOUSE_MOVE, | |||
| WHEEL: Cesium.ScreenSpaceEventType.WHEEL, | |||
| MOUSE_OVER: 'mouseover', | |||
| MOUSE_OUT: 'mouseout' | |||
| MOUSE_OUT: 'mouseout', | |||
| DRAG_START: 'dragStart', | |||
| DRAG_END: 'dragEnd', | |||
| EDIT_START: 'editStart', | |||
| EDIT_END: 'editEnd' | |||
| } | |||
| const ViewerEventType = { | |||
| ADD_LAYER: 'addLayer', | |||
| REMOVE_LAYER: 'removeLayer', | |||
| ADD_EFFECT: 'addEffect', | |||
| REMOVE_EFFECT: 'removeEffect' | |||
| REMOVE_EFFECT: 'removeEffect', | |||
| CLICK: Cesium.ScreenSpaceEventType.LEFT_CLICK, | |||
| RIGHT_CLICK: Cesium.ScreenSpaceEventType.RIGHT_CLICK, | |||
| DB_CLICK: Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK, | |||
| MOUSE_MOVE: Cesium.ScreenSpaceEventType.MOUSE_MOVE, | |||
| WHEEL: Cesium.ScreenSpaceEventType.WHEEL | |||
| } | |||
| const SceneEventType = { | |||
| @@ -44,7 +53,16 @@ const LayerEventType = { | |||
| } | |||
| const OverlayEventType = { | |||
| ...baseEventType | |||
| ...baseEventType, | |||
| CLICK: Cesium.ScreenSpaceEventType.LEFT_CLICK, | |||
| RIGHT_CLICK: Cesium.ScreenSpaceEventType.RIGHT_CLICK, | |||
| DB_CLICK: Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK, | |||
| MOUSE_OVER: 'mouseover', | |||
| MOUSE_OUT: 'mouseout', | |||
| DRAG_START: 'dragStart', | |||
| DRAG_END: 'dragEnd', | |||
| EDIT_START: 'editStart', | |||
| EDIT_END: 'editEnd' | |||
| } | |||
| export { | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2019-12-31 16:58:31 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-11 22:35:29 | |||
| * @Last Modified time: 2020-05-15 14:16:56 | |||
| */ | |||
| import { MouseEventType } from './EventType' | |||
| @@ -17,6 +17,7 @@ class MouseEvent extends Event { | |||
| constructor(viewer) { | |||
| super() | |||
| this._viewer = viewer | |||
| this._selected = undefined | |||
| this._setInputAction() | |||
| this.on(MouseEventType.CLICK, this._clickHandler, this) | |||
| this.on(MouseEventType.DB_CLICK, this._dbClickHandler, this) | |||
| @@ -71,6 +72,30 @@ class MouseEvent extends Event { | |||
| } | |||
| } | |||
| /** | |||
| * Gets the Overlay id | |||
| * @param {*} target | |||
| */ | |||
| _getOverlayId(target) { | |||
| let overlayId = undefined | |||
| /** | |||
| * Entity | |||
| */ | |||
| if (target && target.id && target.id instanceof Cesium.Entity) { | |||
| overlayId = target.id.overlayId | |||
| } | |||
| /** | |||
| * Cesium3DTileFeature | |||
| */ | |||
| if (target && target instanceof Cesium.Cesium3DTileFeature) { | |||
| overlayId = target.tileset.overlayId | |||
| } | |||
| return overlayId | |||
| } | |||
| /** | |||
| * | |||
| * Gets the target information for the mouse event | |||
| @@ -116,21 +141,22 @@ class MouseEvent extends Event { | |||
| * @param {*} mouseInfo | |||
| * | |||
| */ | |||
| _raiseEvent(type, mouseInfo = {}) { | |||
| _raiseEvent(type, mouseInfo = {}, callback) { | |||
| let event = undefined | |||
| let targetInfo = this._getTargetInfo(mouseInfo.target) | |||
| let overlay = targetInfo.overlay | |||
| if (overlay && overlay.overlayEvent) { | |||
| event = overlay.overlayEvent.getEvent(type) | |||
| } else { | |||
| event = this._viewer.viewerEvent.getEvent(type) | |||
| } | |||
| // stopPropagation | |||
| !event && (event = this._viewer.viewerEvent.getEvent(type)) | |||
| event && | |||
| event.numberOfListeners > 0 && | |||
| event.raiseEvent({ | |||
| ...targetInfo, | |||
| ...mouseInfo | |||
| }) | |||
| callback && callback() | |||
| } | |||
| /** | |||
| @@ -188,6 +214,18 @@ class MouseEvent extends Event { | |||
| let mouseInfo = this._getMouseInfo(movement.endPosition) | |||
| this._viewer.canvas.style.cursor = mouseInfo.target ? 'pointer' : 'default' | |||
| this._raiseEvent(MouseEventType.MOUSE_MOVE, mouseInfo) | |||
| // add event for overlay | |||
| if ( | |||
| !this._selected || | |||
| this._getOverlayId(this._selected.target) !== | |||
| this._getOverlayId(mouseInfo.target) | |||
| ) { | |||
| this._raiseEvent(MouseEventType.MOUSE_OUT, this._selected) | |||
| this._raiseEvent(MouseEventType.MOUSE_OVER, mouseInfo, () => { | |||
| this._selected = mouseInfo | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| @@ -2,10 +2,10 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-01-02 14:26:35 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-11 23:57:41 | |||
| * @Last Modified time: 2020-05-15 10:05:01 | |||
| */ | |||
| import { MouseEventType, OverlayEventType } from './EventType' | |||
| import { OverlayEventType } from './EventType' | |||
| import Event from './Event' | |||
| const { Cesium } = DC.Namespace | |||
| @@ -16,11 +16,6 @@ class OverlayEvent extends Event { | |||
| } | |||
| _registerEvent() { | |||
| Object.keys(MouseEventType).forEach(key => { | |||
| let type = MouseEventType[key] | |||
| this._cache[type] = new Cesium.Event() | |||
| }) | |||
| Object.keys(OverlayEventType).forEach(key => { | |||
| let type = OverlayEventType[key] | |||
| this._cache[type] = new Cesium.Event() | |||
| @@ -2,10 +2,10 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-01-02 14:26:35 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-11 23:57:30 | |||
| * @Last Modified time: 2020-05-15 10:05:24 | |||
| */ | |||
| import { MouseEventType, ViewerEventType } from './EventType' | |||
| import { ViewerEventType } from './EventType' | |||
| import Event from './Event' | |||
| const { Cesium } = DC.Namespace | |||
| @@ -16,11 +16,6 @@ class ViewerEvent extends Event { | |||
| } | |||
| _registerEvent() { | |||
| Object.keys(MouseEventType).forEach(key => { | |||
| let type = MouseEventType[key] | |||
| this._cache[type] = new Cesium.Event() | |||
| }) | |||
| Object.keys(ViewerEventType).forEach(key => { | |||
| let type = ViewerEventType[key] | |||
| this._cache[type] = new Cesium.Event() | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-04-24 14:49:37 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-12 00:38:59 | |||
| * @Last Modified time: 2020-05-15 08:58:33 | |||
| */ | |||
| import Transform from '../transform/Transform' | |||
| @@ -28,5 +28,3 @@ export default function area(positions) { | |||
| } | |||
| return result | |||
| } | |||
| Cesium.Math.area = area | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-04-23 09:29:56 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-12 00:46:48 | |||
| * @Last Modified time: 2020-05-15 08:58:37 | |||
| */ | |||
| export default function bounds(positions = [], expand = 0) { | |||
| @@ -2,7 +2,7 @@ | |||
| * @Author: Caven | |||
| * @Date: 2020-04-24 14:43:39 | |||
| * @Last Modified by: Caven | |||
| * @Last Modified time: 2020-05-12 00:42:28 | |||
| * @Last Modified time: 2020-05-15 08:58:38 | |||
| */ | |||
| import Transform from '../transform/Transform' | |||