| "plugins": ["prettier"], | "plugins": ["prettier"], | ||||
| "extends": ["eslint:recommended", "plugin:prettier/recommended"], | "extends": ["eslint:recommended", "plugin:prettier/recommended"], | ||||
| "globals": { | "globals": { | ||||
| "__VERSION__": false, | |||||
| "__TIME__": false, | |||||
| "__AUTHOR__": false, | |||||
| "__HOME_PAGE__": false, | |||||
| "__REPOSITORY__": false, | |||||
| "DC": false, | "DC": false, | ||||
| "build": false, | |||||
| "Cesium": false | "Cesium": false | ||||
| }, | }, | ||||
| "rules": { | "rules": { |
| > 1. 完善罗盘功能 | > 1. 完善罗盘功能 | ||||
| > 2. 修改框架包node下导入的方式 | > 2. 修改框架包node下导入的方式 | ||||
| > 3. 修改DivIcon显示和隐藏功能 | |||||
| > 4. 完善覆盖物的属性设置 | |||||
| ## 1.10.1 | ## 1.10.1 | ||||
| { | { | ||||
| "name": "@dvgis/dc-sdk", | "name": "@dvgis/dc-sdk", | ||||
| "version": "1.10.1", | |||||
| "version": "1.10.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.", | "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", | "main": "index.js", | ||||
| "repository": "https://github.com/dvgis/dc-sdk.git", | "repository": "https://github.com/dvgis/dc-sdk.git", |
| // eslint-disable-next-line no-console | // eslint-disable-next-line no-console | ||||
| console.log( | console.log( | ||||
| `%c \n DC-SDK \n %c \n 用数字描绘世界之美 %c \n | `%c \n DC-SDK \n %c \n 用数字描绘世界之美 %c \n | ||||
| 版本:${build.version} | |||||
| 编译日期:${build.time} | |||||
| 版本:${__VERSION__} | |||||
| 编译日期:${__TIME__} | |||||
| Cesium版本:1.73 | Cesium版本:1.73 | ||||
| 作者:${build.author} | |||||
| 主页: ${build.homepage} | |||||
| github:${build.repository} | |||||
| 作者:${__AUTHOR__} | |||||
| 主页: ${__HOME_PAGE__} | |||||
| github:${__REPOSITORY__} | |||||
| 授权信息:授权-永久使用此软件当前版本。 \n | 授权信息:授权-永久使用此软件当前版本。 \n | ||||
| 版权声明: | 版权声明: |
| */ | */ | ||||
| const ignores = [ | const ignores = [ | ||||
| 'version', | |||||
| 'author', | |||||
| 'home_page', | |||||
| 'init', | 'init', | ||||
| 'ready', | 'ready', | ||||
| 'use', | 'use', | ||||
| 'mixin', | 'mixin', | ||||
| 'Namespace', | 'Namespace', | ||||
| 'Initialized', | |||||
| 'Version', | |||||
| 'Author', | |||||
| 'GitHub', | |||||
| 'Home' | |||||
| 'Initialized' | |||||
| ] | ] | ||||
| /** | /** |
| import { initMixin, initUse } from './global-api' | import { initMixin, initUse } from './global-api' | ||||
| // global namespace | |||||
| let DC = { | let DC = { | ||||
| Author: build.author, | |||||
| GitHub: build.repository, | |||||
| Home: build.homepage, | |||||
| Version: build.version, | |||||
| version: __VERSION__, | |||||
| author: __AUTHOR__, | |||||
| home_page: __HOME_PAGE__, | |||||
| Namespace: {}, | Namespace: {}, | ||||
| Initialized: false | Initialized: false | ||||
| } | } | ||||
| // init global api | |||||
| initMixin(DC) | initMixin(DC) | ||||
| initUse(DC) | initUse(DC) | ||||
| require('../LICENSE') | |||||
| // load Cesium | |||||
| let cesiumLoaded = false | let cesiumLoaded = false | ||||
| DC.init = callback => { | DC.init = callback => { | ||||
| if (!cesiumLoaded) { | if (!cesiumLoaded) { | ||||
| new Promise((resolve, reject) => { | new Promise((resolve, reject) => { | ||||
| let Cesium = require('cesium/Cesium') | let Cesium = require('cesium/Cesium') | ||||
| resolve(Cesium) | resolve(Cesium) | ||||
| }).then(Cesium => { | |||||
| DC.Namespace['Cesium'] = Cesium | |||||
| cesiumLoaded = true | |||||
| delete window.Cesium | |||||
| callback && callback() | |||||
| }) | }) | ||||
| .then(Cesium => { | |||||
| DC.Namespace['Cesium'] = Cesium | |||||
| cesiumLoaded = true | |||||
| delete window.Cesium | |||||
| callback && callback() | |||||
| }) | |||||
| .catch(e => {}) | |||||
| } else { | } else { | ||||
| callback && callback() | callback && callback() | ||||
| } | } | ||||
| } | } | ||||
| require('../log') | |||||
| export default DC | export default DC |
| import { Util, DomUtil, PlotUtil } from './utils' | import { Util, DomUtil, PlotUtil } from './utils' | ||||
| import { MouseEventType, SceneEventType, Event } from './event' | import { MouseEventType, SceneEventType, Event } from './event' | ||||
| import { LayerType, Layer } from './layer' | import { LayerType, Layer } from './layer' | ||||
| import { Overlay, OverlayType } from './overlay' | |||||
| import { OverlayType, Overlay } from './overlay' | |||||
| import ImageryType from './imagery/ImageryType' | import ImageryType from './imagery/ImageryType' | ||||
| import TerrainType from './terrain/TerrainType' | |||||
| import WidgetType from './widget/WidgetType' | import WidgetType from './widget/WidgetType' | ||||
| import State from './state/State' | import State from './state/State' | ||||
| import Position from './position/Position' | import Position from './position/Position' | ||||
| State, | State, | ||||
| Event, | Event, | ||||
| ImageryType, | ImageryType, | ||||
| TerrainType, | |||||
| LayerType, | LayerType, | ||||
| OverlayType, | OverlayType, | ||||
| MouseEventType, | MouseEventType, |
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace | ||||
| const baseEventType = { | |||||
| const BaseEventType = { | |||||
| ADD: 'add', | ADD: 'add', | ||||
| REMOVE: 'remove' | REMOVE: 'remove' | ||||
| } | } | ||||
| MOUSE_MOVE: Cesium.ScreenSpaceEventType.MOUSE_MOVE, | MOUSE_MOVE: Cesium.ScreenSpaceEventType.MOUSE_MOVE, | ||||
| WHEEL: Cesium.ScreenSpaceEventType.WHEEL, | WHEEL: Cesium.ScreenSpaceEventType.WHEEL, | ||||
| MOUSE_OVER: 'mouseover', | MOUSE_OVER: 'mouseover', | ||||
| MOUSE_OUT: 'mouseout', | |||||
| DRAG_START: 'dragStart', | |||||
| DRAG_END: 'dragEnd', | |||||
| EDIT_START: 'editStart', | |||||
| EDIT_END: 'editEnd' | |||||
| MOUSE_OUT: 'mouseout' | |||||
| } | } | ||||
| const ViewerEventType = { | const ViewerEventType = { | ||||
| CLOCK_TICK: 'clockTick' | CLOCK_TICK: 'clockTick' | ||||
| } | } | ||||
| const LayerGroupEventType = { | |||||
| ...baseEventType | |||||
| } | |||||
| const LayerEventType = { | |||||
| ...baseEventType, | |||||
| CLEAR: 'clear' | |||||
| } | |||||
| const EffectEventType = { | |||||
| ...baseEventType | |||||
| } | |||||
| const OverlayEventType = { | const OverlayEventType = { | ||||
| ...baseEventType, | |||||
| ...BaseEventType, | |||||
| CLICK: Cesium.ScreenSpaceEventType.LEFT_CLICK, | CLICK: Cesium.ScreenSpaceEventType.LEFT_CLICK, | ||||
| RIGHT_CLICK: Cesium.ScreenSpaceEventType.RIGHT_CLICK, | RIGHT_CLICK: Cesium.ScreenSpaceEventType.RIGHT_CLICK, | ||||
| DB_CLICK: Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK, | DB_CLICK: Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK, | ||||
| MOUSE_OVER: 'mouseover', | MOUSE_OVER: 'mouseover', | ||||
| MOUSE_OUT: 'mouseout', | |||||
| DRAG_START: 'dragStart', | |||||
| DRAG_END: 'dragEnd', | |||||
| EDIT_START: 'editStart', | |||||
| EDIT_END: 'editEnd' | |||||
| MOUSE_OUT: 'mouseout' | |||||
| } | } | ||||
| const LayerGroupEventType = BaseEventType | |||||
| const LayerEventType = BaseEventType | |||||
| const EffectEventType = BaseEventType | |||||
| export { | export { | ||||
| MouseEventType, | MouseEventType, | ||||
| ViewerEventType, | ViewerEventType, | ||||
| SceneEventType, | SceneEventType, | ||||
| LayerGroupEventType, | LayerGroupEventType, | ||||
| LayerEventType, | LayerEventType, | ||||
| EffectEventType, | |||||
| OverlayEventType | |||||
| OverlayEventType, | |||||
| EffectEventType | |||||
| } | } |
| // for Entity | // for Entity | ||||
| if (target && target.id && target.id instanceof Cesium.Entity) { | if (target && target.id && target.id instanceof Cesium.Entity) { | ||||
| layer = target.id.layer | |||||
| layer = this._viewer | |||||
| .getLayers() | |||||
| .filter(item => item.layerId === target.id.layerId)[0] | |||||
| if (layer && layer.getOverlay) { | if (layer && layer.getOverlay) { | ||||
| overlay = layer.getOverlay(target.id.overlayId) | overlay = layer.getOverlay(target.id.overlayId) | ||||
| } | } | ||||
| // for Cesium3DTileFeature | // for Cesium3DTileFeature | ||||
| if (target && target instanceof Cesium.Cesium3DTileFeature) { | if (target && target instanceof Cesium.Cesium3DTileFeature) { | ||||
| layer = target.tileset.layer | |||||
| layer = this._viewer | |||||
| .getLayers() | |||||
| .filter(item => item.layerId === target.tileset.layerId)[0] | |||||
| feature = target | feature = target | ||||
| if (layer && layer.getOverlay) { | if (layer && layer.getOverlay) { | ||||
| overlay = layer.getOverlay(target.tileset.overlayId) | overlay = layer.getOverlay(target.tileset.overlayId) |
| * @Date: 2020-01-13 10:13:53 | * @Date: 2020-01-13 10:13:53 | ||||
| */ | */ | ||||
| import { Layer, VectorLayer } from './index' | |||||
| import { Billboard, Polyline, Polygon, Model } from '../overlay' | |||||
| import State from '../state/State' | import State from '../state/State' | ||||
| import Layer from './Layer' | |||||
| import VectorLayer from './VectorLayer' | |||||
| import { Billboard, Polyline, Polygon, Model } from '../overlay' | |||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace | ||||
| */ | */ | ||||
| import { DomUtil } from '../utils' | import { DomUtil } from '../utils' | ||||
| import Layer from './Layer' | |||||
| import State from '../state/State' | import State from '../state/State' | ||||
| import Transform from '../transform/Transform' | import Transform from '../transform/Transform' | ||||
| import Layer from './Layer' | |||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace | ||||
| * @param viewer | * @param viewer | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _addHandler(viewer) { | |||||
| _onAdd(viewer) { | |||||
| this._viewer = viewer | this._viewer = viewer | ||||
| this._viewer.dcContainer.appendChild(this._delegate) | this._viewer.dcContainer.appendChild(this._delegate) | ||||
| let scene = this._viewer.scene | let scene = this._viewer.scene | ||||
| let cameraPosition = this._viewer.camera.positionWC | let cameraPosition = this._viewer.camera.positionWC | ||||
| this.eachOverlay(item => { | this.eachOverlay(item => { | ||||
| if (item && item.position) { | if (item && item.position) { | ||||
| item.show = this.show | |||||
| let position = Transform.transformWGS84ToCartesian(item.position) | let position = Transform.transformWGS84ToCartesian(item.position) | ||||
| let windowCoord = Cesium.SceneTransforms.wgs84ToWindowCoordinates( | let windowCoord = Cesium.SceneTransforms.wgs84ToWindowCoordinates( | ||||
| scene, | scene, | ||||
| * @returns {boolean} | * @returns {boolean} | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _removeHandler() { | |||||
| _onRemove() { | |||||
| this._renderRemoveCallback && this._renderRemoveCallback() | this._renderRemoveCallback && this._renderRemoveCallback() | ||||
| this._viewer.dcContainer.removeChild(this._delegate) | this._viewer.dcContainer.removeChild(this._delegate) | ||||
| this._state = State.REMOVED | this._state = State.REMOVED |
| * @Date: 2020-03-30 17:14:00 | * @Date: 2020-03-30 17:14:00 | ||||
| */ | */ | ||||
| import { Label } from '../overlay' | |||||
| import State from '../state/State' | import State from '../state/State' | ||||
| import { Label } from '../overlay' | |||||
| import Layer from './Layer' | import Layer from './Layer' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace | ||||
| class LabelLayer extends Layer { | class LabelLayer extends Layer { | ||||
| constructor(id, url) { | |||||
| if (!url) { | |||||
| throw new Error('LabelLayer:the url invalid') | |||||
| } | |||||
| constructor(id, url = '') { | |||||
| super(id) | super(id) | ||||
| this._dataSource = Cesium.GeoJsonDataSource.load(url) | this._dataSource = Cesium.GeoJsonDataSource.load(url) | ||||
| this._delegate = new Cesium.CustomDataSource(id) | this._delegate = new Cesium.CustomDataSource(id) |
| class Layer { | class Layer { | ||||
| constructor(id) { | constructor(id) { | ||||
| this._id = id || Util.uuid() | |||||
| this._id = Util.uuid() | |||||
| this._bid = id || Util.uuid() | |||||
| this._delegate = undefined | this._delegate = undefined | ||||
| this._viewer = undefined | this._viewer = undefined | ||||
| this._state = undefined | this._state = undefined | ||||
| this._show = true | this._show = true | ||||
| this._cache = {} | this._cache = {} | ||||
| this._attr = {} | this._attr = {} | ||||
| this._style = {} | |||||
| this._layerEvent = new LayerEvent() | this._layerEvent = new LayerEvent() | ||||
| this._layerEvent.on(LayerEventType.ADD, this._addHandler, this) | |||||
| this._layerEvent.on(LayerEventType.REMOVE, this._removeHandler, this) | |||||
| this._layerEvent.on(LayerEventType.ADD, this._onAdd, this) | |||||
| this._layerEvent.on(LayerEventType.REMOVE, this._onRemove, this) | |||||
| this._state = undefined | this._state = undefined | ||||
| this.type = undefined | this.type = undefined | ||||
| } | } | ||||
| get layerId() { | |||||
| return this._id | |||||
| } | |||||
| get id() { | |||||
| return this._bid | |||||
| } | |||||
| get delegate() { | |||||
| return this._delegate | |||||
| } | |||||
| set show(show) { | set show(show) { | ||||
| this._show = show | this._show = show | ||||
| this._delegate && (this._delegate.show = this._show) | this._delegate && (this._delegate.show = this._show) | ||||
| return this._attr | return this._attr | ||||
| } | } | ||||
| get id() { | |||||
| return this._id | |||||
| } | |||||
| get delegate() { | |||||
| return this._delegate | |||||
| } | |||||
| get state() { | get state() { | ||||
| return this._state | return this._state | ||||
| } | } | ||||
| * @param viewer | * @param viewer | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _addHandler(viewer) { | |||||
| _onAdd(viewer) { | |||||
| this._viewer = viewer | this._viewer = viewer | ||||
| if (this._delegate instanceof Cesium.PrimitiveCollection) { | if (this._delegate instanceof Cesium.PrimitiveCollection) { | ||||
| this._viewer.scene.primitives.add(this._delegate) | this._viewer.scene.primitives.add(this._delegate) | ||||
| * @returns {boolean} | * @returns {boolean} | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _removeHandler() { | |||||
| _onRemove() { | |||||
| if (!this._delegate) { | if (!this._delegate) { | ||||
| return false | return false | ||||
| } | } |
| * @Date: 2020-08-27 19:50:32 | * @Date: 2020-08-27 19:50:32 | ||||
| */ | */ | ||||
| import Util from '../../core/utils/Util' | |||||
| import { Util } from '../../core/utils' | |||||
| import State from '../state/State' | import State from '../state/State' | ||||
| import Layer from './Layer' | |||||
| import { LayerGroupEventType, LayerGroupEvent } from '../event' | import { LayerGroupEventType, LayerGroupEvent } from '../event' | ||||
| import Layer from './Layer' | |||||
| class LayerGroup { | class LayerGroup { | ||||
| constructor(id) { | constructor(id) { | ||||
| this._show = true | this._show = true | ||||
| this._viewer = undefined | this._viewer = undefined | ||||
| this._layerGroupEvent = new LayerGroupEvent() | this._layerGroupEvent = new LayerGroupEvent() | ||||
| this._layerGroupEvent.on(LayerGroupEventType.ADD, this._addHandler, this) | |||||
| this._layerGroupEvent.on( | |||||
| LayerGroupEventType.REMOVE, | |||||
| this._removeHandler, | |||||
| this | |||||
| ) | |||||
| this._layerGroupEvent.on(LayerGroupEventType.ADD, this._onAdd, this) | |||||
| this._layerGroupEvent.on(LayerGroupEventType.REMOVE, this._onRemove, this) | |||||
| this.type = Layer.getLayerType('layer-group') | this.type = Layer.getLayerType('layer-group') | ||||
| this._state = State.INITIALIZED | this._state = State.INITIALIZED | ||||
| } | } | ||||
| * @param viewer | * @param viewer | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _addHandler(viewer) { | |||||
| _onAdd(viewer) { | |||||
| this._viewer = viewer | this._viewer = viewer | ||||
| Object.keys(this._cache).forEach(key => { | Object.keys(this._cache).forEach(key => { | ||||
| this._viewer.addLayer(this._cache[key]) | this._viewer.addLayer(this._cache[key]) | ||||
| * | * | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _removeHandler() { | |||||
| _onRemove() { | |||||
| Object.keys(this._cache).forEach(key => { | Object.keys(this._cache).forEach(key => { | ||||
| this._viewer && this._viewer.remove(this._cache[key]) | this._viewer && this._viewer.remove(this._cache[key]) | ||||
| }) | }) | ||||
| } | } | ||||
| /** | /** | ||||
| * | |||||
| * Adds a layer | |||||
| * @param layer | * @param layer | ||||
| * @returns {LayerGroup} | * @returns {LayerGroup} | ||||
| */ | */ | ||||
| } | } | ||||
| /** | /** | ||||
| * | |||||
| * Removes a layer | |||||
| * @param layer | * @param layer | ||||
| * @returns {LayerGroup} | * @returns {LayerGroup} | ||||
| */ | */ | ||||
| } | } | ||||
| /** | /** | ||||
| * | |||||
| * Returns a layer by id | |||||
| * @param id | * @param id | ||||
| * @returns {*|undefined} | * @returns {*|undefined} | ||||
| */ | */ | ||||
| } | } | ||||
| /** | /** | ||||
| * | |||||
| * Returns all layers | |||||
| * @returns {[]} | * @returns {[]} | ||||
| */ | */ | ||||
| getLayers() { | getLayers() { | ||||
| return result | return result | ||||
| } | } | ||||
| /** | |||||
| * Adds to the viewer | |||||
| * @param viewer | |||||
| * @returns {LayerGroup} | |||||
| */ | |||||
| addTo(viewer) { | |||||
| if (viewer && viewer.addLayerGroup) { | |||||
| viewer.addLayerGroup(this) | |||||
| } | |||||
| return this | |||||
| } | |||||
| /** | /** | ||||
| * | * | ||||
| * @returns {LayerGroup} | * @returns {LayerGroup} | ||||
| */ | */ | ||||
| remove() { | remove() { | ||||
| this._viewer && this._viewer.removeLayer(this) | |||||
| this._viewer && this._viewer.removeLayerGroup(this) | |||||
| return this | return this | ||||
| } | } | ||||
| } | } |
| this._attr = {} | this._attr = {} | ||||
| this._overlayEvent = new OverlayEvent() | this._overlayEvent = new OverlayEvent() | ||||
| this.type = undefined | this.type = undefined | ||||
| this.on(OverlayEventType.ADD, this._addHandler, this) | |||||
| this.on(OverlayEventType.REMOVE, this._removeHandler, this) | |||||
| this.on(OverlayEventType.ADD, this._onAdd, this) | |||||
| this.on(OverlayEventType.REMOVE, this._onRemove, this) | |||||
| } | } | ||||
| get overlayId() { | get overlayId() { | ||||
| if (!this._delegate) { | if (!this._delegate) { | ||||
| return false | return false | ||||
| } | } | ||||
| this._delegate.layer = this._layer | |||||
| this._delegate.layerId = this._layer?.layerId | |||||
| this._delegate.overlayId = this._id | this._delegate.overlayId = this._id | ||||
| } | } | ||||
| * @returns {boolean} | * @returns {boolean} | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _addHandler(layer) { | |||||
| _onAdd(layer) { | |||||
| if (!layer) { | if (!layer) { | ||||
| return false | return false | ||||
| } | } | ||||
| * Remove handler | * Remove handler | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _removeHandler() { | |||||
| _onRemove() { | |||||
| if (this._layer?.delegate?.entities) { | if (this._layer?.delegate?.entities) { | ||||
| this._layer.delegate.entities.remove(this._delegate) | this._layer.delegate.entities.remove(this._delegate) | ||||
| this._removedHook && this._removedHook() | this._removedHook && this._removedHook() |
| */ | */ | ||||
| import { Util } from '../../utils' | import { Util } from '../../utils' | ||||
| import State from '../../state/State' | |||||
| import Transform from '../../transform/Transform' | import Transform from '../../transform/Transform' | ||||
| import Parse from '../../parse/Parse' | import Parse from '../../parse/Parse' | ||||
| import State from '../../state/State' | |||||
| import Overlay from '../Overlay' | import Overlay from '../Overlay' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace |
| */ | */ | ||||
| import { Util } from '../../utils' | import { Util } from '../../utils' | ||||
| import State from '../../state/State' | |||||
| import Transform from '../../transform/Transform' | import Transform from '../../transform/Transform' | ||||
| import Parse from '../../parse/Parse' | import Parse from '../../parse/Parse' | ||||
| import State from '../../state/State' | |||||
| import Overlay from '../Overlay' | import Overlay from '../Overlay' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace |
| let distanceDisplayCondition = this._style.distanceDisplayCondition | let distanceDisplayCondition = this._style.distanceDisplayCondition | ||||
| if (distance && distanceDisplayCondition) { | if (distance && distanceDisplayCondition) { | ||||
| this.show = isBetween( | |||||
| distance, | |||||
| distanceDisplayCondition.near, | |||||
| distanceDisplayCondition.far | |||||
| ) | |||||
| this.show = | |||||
| this._show && | |||||
| isBetween( | |||||
| distance, | |||||
| distanceDisplayCondition.near, | |||||
| distanceDisplayCondition.far | |||||
| ) | |||||
| } | } | ||||
| this._delegate.style.transform = `${translate3d} ${scale3d}` | this._delegate.style.transform = `${translate3d} ${scale3d}` | ||||
| } | } | ||||
| * @returns {boolean} | * @returns {boolean} | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _addHandler(layer) { | |||||
| _onAdd(layer) { | |||||
| this._layer = layer | this._layer = layer | ||||
| this._layer.delegate.appendChild(this._delegate) | this._layer.delegate.appendChild(this._delegate) | ||||
| this._delegate.addEventListener('click', () => { | this._delegate.addEventListener('click', () => { | ||||
| * | * | ||||
| * @private | * @private | ||||
| */ | */ | ||||
| _removeHandler() { | |||||
| _onRemove() { | |||||
| if (this._layer) { | if (this._layer) { | ||||
| this._layer.delegate.removeChild(this._delegate) | this._layer.delegate.removeChild(this._delegate) | ||||
| this._state = State.REMOVED | this._state = State.REMOVED |
| */ | */ | ||||
| import { Util } from '../../utils' | import { Util } from '../../utils' | ||||
| import State from '../../state/State' | |||||
| import Transform from '../../transform/Transform' | import Transform from '../../transform/Transform' | ||||
| import Parse from '../../parse/Parse' | import Parse from '../../parse/Parse' | ||||
| import State from '../../state/State' | |||||
| import Overlay from '../Overlay' | import Overlay from '../Overlay' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace |
| */ | */ | ||||
| import { Util } from '../../utils' | import { Util } from '../../utils' | ||||
| import State from '../../state/State' | |||||
| import Transform from '../../transform/Transform' | import Transform from '../../transform/Transform' | ||||
| import Parse from '../../parse/Parse' | import Parse from '../../parse/Parse' | ||||
| import State from '../../state/State' | |||||
| import Overlay from '../Overlay' | import Overlay from '../Overlay' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace |
| import { Util } from '../../utils' | import { Util } from '../../utils' | ||||
| import { center, area } from '../../math' | import { center, area } from '../../math' | ||||
| import State from '../../state/State' | |||||
| import Transform from '../../transform/Transform' | import Transform from '../../transform/Transform' | ||||
| import Parse from '../../parse/Parse' | import Parse from '../../parse/Parse' | ||||
| import State from '../../state/State' | |||||
| import Overlay from '../Overlay' | import Overlay from '../Overlay' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace |
| import { Util } from '../../utils' | import { Util } from '../../utils' | ||||
| import { center, distance } from '../../math' | import { center, distance } from '../../math' | ||||
| import State from '../../state/State' | |||||
| import Transform from '../../transform/Transform' | import Transform from '../../transform/Transform' | ||||
| import Parse from '../../parse/Parse' | import Parse from '../../parse/Parse' | ||||
| import State from '../../state/State' | |||||
| import Overlay from '../Overlay' | import Overlay from '../Overlay' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace |
| /* | |||||
| /** | |||||
| * @Author: Caven | * @Author: Caven | ||||
| * @Date: 2020-01-06 15:04:15 | |||||
| * @Last Modified by: Caven | |||||
| * @Last Modified time: 2020-06-04 22:01:23 | |||||
| * @Date: 2020-04-15 20:57:22 | |||||
| */ | */ | ||||
| export { default as OverlayType } from './OverlayType' | export { default as OverlayType } from './OverlayType' | ||||
| export { default as Overlay } from './Overlay' | export { default as Overlay } from './Overlay' | ||||
| export { default as Billboard } from './base/Billboard' | export { default as Billboard } from './base/Billboard' |
| */ | */ | ||||
| import { Util } from '../../utils' | import { Util } from '../../utils' | ||||
| import State from '../../state/State' | |||||
| import Transform from '../../transform/Transform' | import Transform from '../../transform/Transform' | ||||
| import Parse from '../../parse/Parse' | import Parse from '../../parse/Parse' | ||||
| import State from '../../state/State' | |||||
| import Overlay from '../Overlay' | import Overlay from '../Overlay' | ||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace |
| * @param {*} layer | * @param {*} layer | ||||
| * Overrides parent methods | * Overrides parent methods | ||||
| */ | */ | ||||
| _addHandler(layer) { | |||||
| _onAdd(layer) { | |||||
| if (!layer) { | if (!layer) { | ||||
| return false | return false | ||||
| } | } | ||||
| this._layer = layer | this._layer = layer | ||||
| this._delegate.readyPromise.then(tileset => { | this._delegate.readyPromise.then(tileset => { | ||||
| this._layer.delegate.add(tileset) | this._layer.delegate.add(tileset) | ||||
| tileset.layer = layer | |||||
| tileset.layerId = layer?.layerId | |||||
| tileset.overlayId = this._id | tileset.overlayId = this._id | ||||
| this._state = State.ADDED | this._state = State.ADDED | ||||
| }) | }) | ||||
| /** | /** | ||||
| * Overrides parent methods | * Overrides parent methods | ||||
| */ | */ | ||||
| _removeHandler() { | |||||
| _onRemove() { | |||||
| if (!this._layer) { | if (!this._layer) { | ||||
| return false | return false | ||||
| } | } |
| return position | return position | ||||
| } | } | ||||
| /** | |||||
| * | |||||
| * @returns {*[]} | |||||
| */ | |||||
| toArray() { | |||||
| return [this.lng, this.lat, this.alt, this.heading, this.pitch, this.roll] | |||||
| } | |||||
| /** | /** | ||||
| * | * | ||||
| * @returns {string} | * @returns {string} | ||||
| /** | /** | ||||
| * | * | ||||
| * @param str | |||||
| * @param arr | |||||
| * @returns {Position} | * @returns {Position} | ||||
| */ | */ | ||||
| static fromString(str) { | |||||
| static fromArray(arr) { | |||||
| let position = new Position() | let position = new Position() | ||||
| if (str && typeof str === 'string') { | |||||
| let arr = str.split(',') | |||||
| if (Array.isArray(arr)) { | |||||
| position.lng = arr[0] || 0 | position.lng = arr[0] || 0 | ||||
| position.lat = arr[1] || 0 | position.lat = arr[1] || 0 | ||||
| position.alt = arr[2] || 0 | position.alt = arr[2] || 0 | ||||
| return position | return position | ||||
| } | } | ||||
| /** | |||||
| * | |||||
| * @param str | |||||
| * @returns {Position} | |||||
| */ | |||||
| static fromString(str) { | |||||
| let position = new Position() | |||||
| if (str && typeof str === 'string') { | |||||
| let arr = str.split(',') | |||||
| position = this.fromArray(arr) | |||||
| } | |||||
| return position | |||||
| } | |||||
| /** | /** | ||||
| * Deserialize | * Deserialize | ||||
| * @param valStr | * @param valStr |
| CLEARED: 'cleared', | CLEARED: 'cleared', | ||||
| INSTALLED: 'installed', | INSTALLED: 'installed', | ||||
| ENABLED: 'enabled', | ENABLED: 'enabled', | ||||
| DISABLED: 'disabled' | |||||
| DISABLED: 'disabled', | |||||
| PLAY: 'play', | |||||
| PAUSE: 'pause', | |||||
| RESTORE: 'restore' | |||||
| } | } | ||||
| export default State | export default State |
| * @Date: 2020-01-21 15:54:56 | * @Date: 2020-01-21 15:54:56 | ||||
| */ | */ | ||||
| import TerrainType from './TerrainType' | |||||
| const { Cesium } = DC.Namespace | const { Cesium } = DC.Namespace | ||||
| class TerrainFactory { | class TerrainFactory { | ||||
| static createVRTerrain(options) { | static createVRTerrain(options) { | ||||
| return new Cesium.VRTheWorldTerrainProvider(options) | return new Cesium.VRTheWorldTerrainProvider(options) | ||||
| } | } | ||||
| /** | |||||
| * Create Terrain | |||||
| * @param type | |||||
| * @param options | |||||
| * @returns {any} | |||||
| */ | |||||
| static createTerrain(type, options) { | |||||
| let terrain = undefined | |||||
| switch (type) { | |||||
| case TerrainType.NONE: | |||||
| terrain = this.createEllipsoidTerrain(options) | |||||
| break | |||||
| case TerrainType.XYZ: | |||||
| terrain = this.createUrlTerrain(options) | |||||
| break | |||||
| case TerrainType.GOOGLE: | |||||
| terrain = this.createGoogleTerrain(options) | |||||
| break | |||||
| case TerrainType.ARCGIS: | |||||
| terrain = this.createArcgisTerrain(options) | |||||
| break | |||||
| case TerrainType.VR: | |||||
| terrain = this.createVRTerrain(options) | |||||
| break | |||||
| default: | |||||
| break | |||||
| } | |||||
| return terrain | |||||
| } | |||||
| } | } | ||||
| export default TerrainFactory | export default TerrainFactory |
| /** | |||||
| * @Author: Caven | |||||
| * @Date: 2020-05-10 08:15:36 | |||||
| */ | |||||
| let TerrainType = { | |||||
| NONE: 'none', | |||||
| XYZ: 'xyz', | |||||
| ARCGIS: 'arcgis', | |||||
| GOOGLE: 'google', | |||||
| VR: 'vr' | |||||
| } | |||||
| export default TerrainType |
| return dest | return dest | ||||
| } | } | ||||
| /** | |||||
| * | |||||
| * @function trim(str: String): String | |||||
| * Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) | |||||
| * @param {*} str | |||||
| * | |||||
| */ | |||||
| static trim(str) { | |||||
| return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '') | |||||
| } | |||||
| /** | /** | ||||
| * @function splitWords(str: String): String[] | * @function splitWords(str: String): String[] | ||||
| * Trims and splits the string on whitespace and returns the array of parts. | * Trims and splits the string on whitespace and returns the array of parts. | ||||
| return obj.options | return obj.options | ||||
| } | } | ||||
| /** | |||||
| * @function formatNum(num: Number, digits?: Number): Number | |||||
| * Returns the number `num` rounded to `digits` decimals, or to 6 decimals by default. | |||||
| * @param num | |||||
| * @param digits | |||||
| * @returns {number} | |||||
| */ | |||||
| static formatNum(num, digits) { | |||||
| let pow = Math.pow(10, digits === undefined ? 6 : digits) | |||||
| return Math.round(num * pow) / pow | |||||
| } | |||||
| /** | |||||
| * @function trim(str: String): String | |||||
| * Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) | |||||
| * @param {*} str | |||||
| */ | |||||
| static trim(str) { | |||||
| return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '') | |||||
| } | |||||
| /** | |||||
| * Data URI string containing a base64-encoded empty GIF image. | |||||
| * Used as a hack to free memory from unused images on WebKit-powered | |||||
| * mobile devices (by setting image `src` to this string). | |||||
| * @returns {string} | |||||
| */ | |||||
| static emptyImageUrl() { | |||||
| return (function() { | |||||
| return 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' | |||||
| })() | |||||
| } | |||||
| /** | /** | ||||
| * @function checkPosition(position: Object): Boolean | * @function checkPosition(position: Object): Boolean | ||||
| * Check position for validity | * Check position for validity | ||||
| position.hasOwnProperty('_alt') | position.hasOwnProperty('_alt') | ||||
| ) | ) | ||||
| } | } | ||||
| /** | |||||
| * Checks positions for validity | |||||
| * @param positions | |||||
| * @returns {Boolean} | |||||
| */ | |||||
| static checkPositions(positions) { | |||||
| return ( | |||||
| positions && (typeof positions === 'string' || Array.isArray(positions)) | |||||
| ) | |||||
| } | |||||
| /** | |||||
| * Checks viewer for validity | |||||
| * @param viewer | |||||
| * @returns {Boolean} | |||||
| */ | |||||
| static checkViewer(viewer) { | |||||
| return viewer && viewer.delegate && viewer.canvas | |||||
| } | |||||
| } | } | ||||
| export default Util | export default Util |
| Cartesian2: Cesium.Cartesian2, | Cartesian2: Cesium.Cartesian2, | ||||
| Cartesian3: Cesium.Cartesian3, | Cartesian3: Cesium.Cartesian3, | ||||
| SceneMode: Cesium.SceneMode, | SceneMode: Cesium.SceneMode, | ||||
| HeightReference: Cesium.HeightReference, | |||||
| ClassificationType: Cesium.ClassificationType, | |||||
| ShadowMode: Cesium.ShadowMode, | |||||
| TilesetStyle: Cesium.Cesium3DTileStyle, | TilesetStyle: Cesium.Cesium3DTileStyle, | ||||
| CallbackProperty: Cesium.CallbackProperty, | CallbackProperty: Cesium.CallbackProperty, | ||||
| JulianDate: Cesium.JulianDate, | JulianDate: Cesium.JulianDate, | ||||
| ClassificationType: Cesium.ClassificationType, | |||||
| Color: Cesium.Color, | Color: Cesium.Color, | ||||
| ColorMaterialProperty: Cesium.ColorMaterialProperty, | ColorMaterialProperty: Cesium.ColorMaterialProperty, | ||||
| ImageMaterialProperty: Cesium.ImageMaterialProperty, | ImageMaterialProperty: Cesium.ImageMaterialProperty, |
| ...cesiumCopyPlugin, | ...cesiumCopyPlugin, | ||||
| new webpack.DefinePlugin({ | new webpack.DefinePlugin({ | ||||
| CESIUM_BASE_URL: JSON.stringify('./libs/dc-sdk/resources/'), | CESIUM_BASE_URL: JSON.stringify('./libs/dc-sdk/resources/'), | ||||
| 'build.version': JSON.stringify(packageInfo.version), | |||||
| 'build.time': JSON.stringify(getTime()), | |||||
| 'build.author': JSON.stringify(packageInfo.author), | |||||
| 'build.repository': JSON.stringify(packageInfo.repository), | |||||
| 'build.homepage': JSON.stringify(packageInfo.homepage) | |||||
| __VERSION__: JSON.stringify(packageInfo.version), | |||||
| __TIME__: JSON.stringify(getTime()), | |||||
| __AUTHOR__: JSON.stringify(packageInfo.author), | |||||
| __REPOSITORY__: JSON.stringify(packageInfo.repository), | |||||
| __HOME_PAGE__: JSON.stringify(packageInfo.homepage) | |||||
| }) | }) | ||||
| ] | ] | ||||
| if (IS_PROD) { | if (IS_PROD) { | ||||
| entry: { | entry: { | ||||
| 'dc.base': ['base'] | 'dc.base': ['base'] | ||||
| }, | }, | ||||
| devtool: IS_PROD ? false : 'source-map', | |||||
| devtool: IS_PROD ? false : 'cheap-module-eval-source-map', | |||||
| output: { | output: { | ||||
| filename: IS_PROD ? '[name].min.js' : '[name].js', | filename: IS_PROD ? '[name].min.js' : '[name].js', | ||||
| path: path.resolve(__dirname, 'dist'), | path: path.resolve(__dirname, 'dist'), |
| entry: { | entry: { | ||||
| 'dc.core': ['theme', 'entry'] | 'dc.core': ['theme', 'entry'] | ||||
| }, | }, | ||||
| devtool: IS_PROD ? false : 'source-map', | |||||
| devtool: IS_PROD ? false : 'cheap-module-eval-source-map', | |||||
| output: { | output: { | ||||
| filename: IS_PROD ? '[name].min.js' : '[name].js', | filename: IS_PROD ? '[name].min.js' : '[name].js', | ||||
| path: path.resolve(__dirname, 'dist'), | path: path.resolve(__dirname, 'dist'), |