From dfe5ba4f8b390ebeff0f51ce3f80cd02dc27fd9a Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 03 Apr 2025 17:30:10 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/utils/cesium-tsa.js | 1978 ++++++++++++++++++++++++++++++-----------------------------
1 files changed, 1,016 insertions(+), 962 deletions(-)
diff --git a/src/utils/cesium-tsa.js b/src/utils/cesium-tsa.js
index 8e75522..773e6f4 100644
--- a/src/utils/cesium-tsa.js
+++ b/src/utils/cesium-tsa.js
@@ -18,1114 +18,1168 @@
let customMapLayer = {}
let handlerEvents = {
- handler: null,
+ handler: null,
}
-export default function cesiumOperation() {
- const TDT_Token = 'c6eea7dad4fa1e2d1e32ec0e7c9735db'
- // 天地图地图
- const TDT_IMG_C =
- 'https://{s}.tianditu.gov.cn/img_c/wmts?service=wmts&request=GetTile&version=1.0.0' +
- '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
- '&style=default&format=tiles&tk=' +
- TDT_Token
- // 天地图注记
- const TDT_ZJ =
- 'https://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0' +
- '&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
- '&style=default&format=tiles&tk=' +
- TDT_Token
- // 标准地图注记
- const TID_STAND =
- 'https://{s}.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0' +
- '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
- '&style=default&format=tiles&tk=' +
- TDT_Token
- // 天地图图层变量
- const imageryProvider_tdt = new Cesium.WebMapTileServiceImageryProvider({
- url: TDT_IMG_C,
- layer: 'tdtImg_c',
- style: 'default',
- format: 'tiles',
- tileMatrixSetID: 'c',
- subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
- tilingScheme: new Cesium.GeographicTilingScheme(),
- tileMatrixLabels: [
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '10',
- '11',
- '12',
- '13',
- '14',
- '15',
- '16',
- '17',
- '18',
- '19',
- ],
- maximumLevel: 17,
- })
- // 标准地图图层变量
- const imageryProvider_stand = new Cesium.UrlTemplateImageryProvider({
- url: 'https://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
- subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
- // format: 'image/jpeg',
- // show: true,
- maximumLevel: 18,
- credit: 'stand_tc',
- })
- // 标准地图图层注解
- const imageryProvider_standZh = new Cesium.UrlTemplateImageryProvider({
- url: 'https://t{s}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
- subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
- maximumLevel: 18,
- credit: 'stand_zj',
- })
- // 天地图中文注记加载
- const annotation = new Cesium.WebMapTileServiceImageryProvider({
- url: TDT_ZJ,
- layer: 'tdtZwImg_c',
- style: 'default',
- format: 'tiles',
- tileMatrixSetID: 'c',
- subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
- tilingScheme: new Cesium.GeographicTilingScheme(),
- tileMatrixLabels: [
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '10',
- '11',
- '12',
- '13',
- '14',
- '15',
- '16',
- '17',
- '18',
- '19',
- ],
- maximumLevel: 50,
- })
+export default function cesiumOperation () {
+ const TDT_Token = 'c6eea7dad4fa1e2d1e32ec0e7c9735db'
+ // 天地图地图
+ const TDT_IMG_C =
+ 'https://{s}.tianditu.gov.cn/img_c/wmts?service=wmts&request=GetTile&version=1.0.0' +
+ '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
+ '&style=default&format=tiles&tk=' +
+ TDT_Token
+ // 天地图注记
+ const TDT_ZJ =
+ 'https://{s}.tianditu.gov.cn/cia_c/wmts?service=wmts&request=GetTile&version=1.0.0' +
+ '&LAYER=cia&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
+ '&style=default&format=tiles&tk=' +
+ TDT_Token
+ // 标准地图注记
+ const TID_STAND =
+ 'https://{s}.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0' +
+ '&LAYER=img&tileMatrixSet=c&TileMatrix={TileMatrix}&TileRow={TileRow}&TileCol={TileCol}' +
+ '&style=default&format=tiles&tk=' +
+ TDT_Token
+ // 天地图图层变量
+ const imageryProvider_tdt = new Cesium.WebMapTileServiceImageryProvider({
+ url: TDT_IMG_C,
+ layer: 'tdtImg_c',
+ style: 'default',
+ format: 'tiles',
+ tileMatrixSetID: 'c',
+ subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
+ tilingScheme: new Cesium.GeographicTilingScheme(),
+ tileMatrixLabels: [
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ '8',
+ '9',
+ '10',
+ '11',
+ '12',
+ '13',
+ '14',
+ '15',
+ '16',
+ '17',
+ '18',
+ '19',
+ ],
+ maximumLevel: 17,
+ })
+ // 标准地图图层变量
+ const imageryProvider_stand = new Cesium.UrlTemplateImageryProvider({
+ url: 'https://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
+ subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
+ // format: 'image/jpeg',
+ // show: true,
+ maximumLevel: 18,
+ credit: 'stand_tc',
+ })
+ // 标准地图图层注解
+ const imageryProvider_standZh = new Cesium.UrlTemplateImageryProvider({
+ url: 'https://t{s}.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
+ subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
+ maximumLevel: 18,
+ credit: 'stand_zj',
+ })
+ // 天地图中文注记加载
+ const annotation = new Cesium.WebMapTileServiceImageryProvider({
+ url: TDT_ZJ,
+ layer: 'tdtZwImg_c',
+ style: 'default',
+ format: 'tiles',
+ tileMatrixSetID: 'c',
+ subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],
+ tilingScheme: new Cesium.GeographicTilingScheme(),
+ tileMatrixLabels: [
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ '8',
+ '9',
+ '10',
+ '11',
+ '12',
+ '13',
+ '14',
+ '15',
+ '16',
+ '17',
+ '18',
+ '19',
+ ],
+ maximumLevel: 50,
+ })
- // 高德地图图层变量
- //高德矢量地图数据图层,自带注记
- const imageryProvider_ammapSL = new Cesium.UrlTemplateImageryProvider({
- url: 'https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
- layer: 'tdtVecBasicLayer',
- style: 'default',
- format: 'image/png',
- tileMatrixSetID: 'GoogleMapsCompatible',
- subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
- maximumLevel: 18,
- tilingScheme: new AmapMercatorTilingScheme(),
- credit: 'amap_SL',
- })
+ // 高德地图图层变量
+ //高德矢量地图数据图层,自带注记
+ const imageryProvider_ammapSL = new Cesium.UrlTemplateImageryProvider({
+ url: 'https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
+ layer: 'tdtVecBasicLayer',
+ style: 'default',
+ format: 'image/png',
+ tileMatrixSetID: 'GoogleMapsCompatible',
+ subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
+ maximumLevel: 18,
+ tilingScheme: new AmapMercatorTilingScheme(),
+ credit: 'amap_SL',
+ })
- //高德影像地图数据图层,自带注记
- const imageryProvider_ammap = new Cesium.UrlTemplateImageryProvider({
- url: 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
- layer: 'tdtVecBasicLayer',
- style: 'default',
- format: 'image/png',
- tileMatrixSetID: 'GoogleMapsCompatible',
- subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
- maximumLevel: 18,
- tilingScheme: new AmapMercatorTilingScheme(),
- credit: 'amap_stand',
- })
- // 高德影像地图数据图层,注记
- const imageryProvider_ammapBz = new Cesium.UrlTemplateImageryProvider({
- url: 'https://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8',
- tilingScheme: new AmapMercatorTilingScheme(),
- minimumLevel: 3,
- })
+ //高德影像地图数据图层,自带注记
+ const imageryProvider_ammap = new Cesium.UrlTemplateImageryProvider({
+ url: 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
+ layer: 'tdtVecBasicLayer',
+ style: 'default',
+ format: 'image/png',
+ tileMatrixSetID: 'GoogleMapsCompatible',
+ subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
+ maximumLevel: 18,
+ tilingScheme: new AmapMercatorTilingScheme(),
+ credit: 'amap_stand',
+ })
+ // 高德影像地图数据图层,注记
+ const imageryProvider_ammapBz = new Cesium.UrlTemplateImageryProvider({
+ url: 'https://webst02.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8',
+ tilingScheme: new AmapMercatorTilingScheme(),
+ minimumLevel: 3,
+ })
- Cesium.Ion.defaultAccessToken =
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkMzg4MDk5YS05MWEzLTQ3NTYtOTYzNS04Yzk4MjU2MjI5N2YiLCJpZCI6MjE3OTM4LCJpYXQiOjE3MTY3NzIzOTR9.q1rzR7SRtIulQKTtJuv5HPUbp1av5E9RaOe-6voPDGc'
- const _init = async id => {
- const cesiumToken =
- 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkYTZlNGNlYS01NTU1LTQ1MGEtYmNlZS0yNTE2NDk5YWM2MjEiLCJpZCI6MTc5Njk2LCJpYXQiOjE3MDA1NDcwMjV9.qcl4AH2731cfFd0-I1ZLUINPXqvglLkDFD-UGR2zU5M'
- Cesium.Ion.defaultAccessToken = cesiumToken
- Cesium.Camera.DEFAULT_VIEW_FACTOR = -0.45
- // 西南东北,默认显示中国
- Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(66, 4, 135, 53.55)
- viewer = new Cesium.Viewer(id, {
- terrain: Terrain.fromWorldTerrain(),
- infoBox: false, // 禁用沙箱,解决控制台报错
- animation: false, // 左下角的动画仪表盘
- baseLayerPicker: false, // 右上角的图层选择按钮
- geocoder: false, // 搜索框
- homeButton: false, // home按钮
- sceneModePicker: false, // 模式切换按钮
- timeline: false, // 底部的时间轴
- navigationHelpButton: false, // 右上角的帮助按钮,
- selectionIndicator: false, // 是否显示选择指示器
- baseLayer: false,
- fullscreenButton: false,
- })
+ Cesium.Ion.defaultAccessToken =
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkMzg4MDk5YS05MWEzLTQ3NTYtOTYzNS04Yzk4MjU2MjI5N2YiLCJpZCI6MjE3OTM4LCJpYXQiOjE3MTY3NzIzOTR9.q1rzR7SRtIulQKTtJuv5HPUbp1av5E9RaOe-6voPDGc'
+ const _init = async id => {
+ const cesiumToken =
+ 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkYTZlNGNlYS01NTU1LTQ1MGEtYmNlZS0yNTE2NDk5YWM2MjEiLCJpZCI6MTc5Njk2LCJpYXQiOjE3MDA1NDcwMjV9.qcl4AH2731cfFd0-I1ZLUINPXqvglLkDFD-UGR2zU5M'
+ Cesium.Ion.defaultAccessToken = cesiumToken
+ Cesium.Camera.DEFAULT_VIEW_FACTOR = -0.45
+ // 西南东北,默认显示中国
+ Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(66, 4, 135, 53.55)
+ viewer = new Cesium.Viewer(id, {
+ terrain: Terrain.fromWorldTerrain(),
+ infoBox: false, // 禁用沙箱,解决控制台报错
+ animation: false, // 左下角的动画仪表盘
+ baseLayerPicker: false, // 右上角的图层选择按钮
+ geocoder: false, // 搜索框
+ homeButton: false, // home按钮
+ sceneModePicker: false, // 模式切换按钮
+ timeline: false, // 底部的时间轴
+ navigationHelpButton: false, // 右上角的帮助按钮,
+ selectionIndicator: false, // 是否显示选择指示器
+ baseLayer: false,
+ fullscreenButton: false,
+ })
- // viewer.scene.globe.depthTestAgainstTerrain = true;
+ // viewer.scene.globe.depthTestAgainstTerrain = true;
- viewer.imageryLayers.removeAll()
+ viewer.imageryLayers.removeAll()
- globalBaseMapLayers = []
+ globalBaseMapLayers = []
- viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
- Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
- ) // 禁用双击
- viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
- viewer.scene.screenSpaceCameraController.maximumZoomDistance = 4500000
- // viewer.scene.camera.setView({
- // destination: Cesium.Cartesian3.fromDegrees(115.856725497,28.624514734, 8000)
- // });
- // // 添加地形数据
+ viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
+ Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
+ ) // 禁用双击
+ viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
+ viewer.scene.screenSpaceCameraController.maximumZoomDistance = 4500000
+ // viewer.scene.camera.setView({
+ // destination: Cesium.Cartesian3.fromDegrees(115.856725497,28.624514734, 8000)
+ // });
+ // // 添加地形数据
- // viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
- // url: 'https://data.marsgis.cn/terrain',
- // });
+ // viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
+ // url: 'https://data.marsgis.cn/terrain',
+ // });
- // viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
- // url: Cesium.IonResource.fromAssetId(1),
- // requestWaterMask: false,
- // requestVertexNormals: true,
- // })
+ // viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
+ // url: Cesium.IonResource.fromAssetId(1),
+ // requestWaterMask: false,
+ // requestVertexNormals: true,
+ // })
- window.$viewer = viewer
- loadLAYER()
- }
+ window.$viewer = viewer
+ loadLAYER()
+ }
- const loadLAYER = () => {
- let mapLayers = []
+ const loadLAYER = () => {
+ let mapLayers = []
- globalBaseMapLayers.length &&
- globalBaseMapLayers.forEach(item => {
- if (item.mapLayer) item.mapLayer.show = false
- })
+ globalBaseMapLayers.length &&
+ globalBaseMapLayers.forEach(item => {
+ if (item.mapLayer) item.mapLayer.show = false
+ })
- // 高德影像地图数据图层
- if (store.state.common.mapSetting.mode === 3) {
- mapLayers.push(
- ...[
- { key: 'imageryProvider_ammap', layer: imageryProvider_ammap },
- { key: 'imageryProvider_ammapBz', layer: imageryProvider_ammapBz },
- ]
- )
- }
- // 高德地图矢量图层加载
- if (store.state.common.mapSetting.mode === 2) {
- mapLayers.push({
- key: 'imageryProvider_ammapSL',
- layer: imageryProvider_ammapSL,
- })
- }
+ // 高德影像地图数据图层
+ if (store.state.common.mapSetting.mode === 3) {
+ mapLayers.push(
+ ...[
+ { key: 'imageryProvider_ammap', layer: imageryProvider_ammap },
+ { key: 'imageryProvider_ammapBz', layer: imageryProvider_ammapBz },
+ ]
+ )
+ }
+ // 高德地图矢量图层加载
+ if (store.state.common.mapSetting.mode === 2) {
+ mapLayers.push({
+ key: 'imageryProvider_ammapSL',
+ layer: imageryProvider_ammapSL,
+ })
+ }
- // 标准地图加载
- if (store.state.common.mapSetting.mode === 0) {
- mapLayers.push(
- ...[
- { key: 'imageryProvider_standZh', layer: imageryProvider_standZh },
- { key: 'imageryProvider_stand', layer: imageryProvider_stand },
- ]
- )
- }
+ // 标准地图加载
+ if (store.state.common.mapSetting.mode === 0) {
+ mapLayers.push(
+ ...[
+ { key: 'imageryProvider_standZh', layer: imageryProvider_standZh },
+ { key: 'imageryProvider_stand', layer: imageryProvider_stand },
+ ]
+ )
+ }
- // 路线图加载
- if (
- store.state.common.mapSetting.roadLine === true &&
- store.state.common.mapSetting.mode === 1
- ) {
- mapLayers.push({ key: 'annotation', layer: annotation })
- }
+ // 路线图加载
+ if (
+ store.state.common.mapSetting.roadLine === true &&
+ store.state.common.mapSetting.mode === 1
+ ) {
+ mapLayers.push({ key: 'annotation', layer: annotation })
+ }
- // 天地图图层加载
- if (store.state.common.mapSetting.mode === 1) {
- mapLayers.push({
- key: 'imageryProvider_tdt',
- layer: imageryProvider_tdt,
- })
- }
+ // 天地图图层加载
+ if (store.state.common.mapSetting.mode === 1) {
+ mapLayers.push({
+ key: 'imageryProvider_tdt',
+ layer: imageryProvider_tdt,
+ })
+ }
- // 创建一个Set来快速查找array2中的id
- let keyBaseMap = new Set(globalBaseMapLayers.map(item => item.key))
- let keyMapLayers = new Set(mapLayers.map(item => item.key))
+ // 创建一个Set来快速查找array2中的id
+ let keyBaseMap = new Set(globalBaseMapLayers.map(item => item.key))
+ let keyMapLayers = new Set(mapLayers.map(item => item.key))
- let keyExistBaseMap = mapLayers.filter(item => !keyBaseMap.has(item.key))
+ let keyExistBaseMap = mapLayers.filter(item => !keyBaseMap.has(item.key))
- let keyNoExistBaseMap = globalBaseMapLayers.filter(item => keyMapLayers.has(item.key))
+ let keyNoExistBaseMap = globalBaseMapLayers.filter(item => keyMapLayers.has(item.key))
- keyExistBaseMap.length &&
- keyExistBaseMap.forEach(item => {
- let curLayer = {
- key: item.key,
- mapLayer: viewer?.imageryLayers.addImageryProvider(item.layer),
- }
+ keyExistBaseMap.length &&
+ keyExistBaseMap.forEach(item => {
+ let curLayer = {
+ key: item.key,
+ mapLayer: viewer?.imageryLayers.addImageryProvider(item.layer),
+ }
- if (curLayer.mapLayer) curLayer.mapLayer.show = true
+ if (curLayer.key == 'imageryProvider_standZh') {
+ curLayer.mapLayer.brightness = 0.6 // 亮度(默认值)
+ curLayer.mapLayer.contrast = 1.8 // 对比度(负值降低对比度)
+ curLayer.mapLayer.hue = 1 // 色相(弧度值,3.0可能导致紫色)
+ curLayer.mapLayer.saturation = 0 // 增加饱和度强化蓝色
+ curLayer.mapLayer.gamma = 0.3 // 伽马校正(小于1.0使颜色更鲜艳)
+ curLayer.invertColor = true // 启用反色
+ }
- viewer?.imageryLayers.lowerToBottom(curLayer.mapLayer)
+ if (curLayer.key == 'imageryProvider_stand') {
+ curLayer.mapLayer.brightness = 0.6 // 亮度(默认值)
+ curLayer.mapLayer.contrast = 1.8 // 对比度(负值降低对比度)
+ curLayer.mapLayer.hue = 1 // 色相(弧度值,3.0可能导致紫色)
+ curLayer.mapLayer.saturation = 0 // 增加饱和度强化蓝色
+ curLayer.mapLayer.gamma = 0.3 // 伽马校正(小于1.0使颜色更鲜艳)
+ curLayer.invertColor = true // 启用反色
+ // curLayer.filterRGB = [0, 50, 100]
+ filterLayer({
+ bInvertColor: true,
+ bFilterColor: true,
+ filterColor: '#4e70a6'
+ })
+ }
- globalBaseMapLayers.push(curLayer)
- })
+ if (curLayer.mapLayer) curLayer.mapLayer.show = true
- keyNoExistBaseMap.length &&
- keyNoExistBaseMap.forEach(item => {
- if (item.mapLayer) item.mapLayer.show = true
+ viewer?.imageryLayers.lowerToBottom(curLayer.mapLayer)
- viewer?.imageryLayers.lowerToBottom(item.mapLayer)
- })
- // 2D/3D切换
- switchModel(store.state.common.mapSetting.visual)
- }
+ globalBaseMapLayers.push(curLayer)
+ })
- const addCustomLayers = (layerName, options) => {
- if (options.type == 'arcgis') {
- var imageryProvider = new Cesium.WebMapTileServiceImageryProvider({
- url: options.src,
- layer: options.title,
- style: 'default',
- format: 'image/png',
- tileMatrixSetID: 'default',
- tilingScheme: new Cesium.GeographicTilingScheme(),
- tileMatrixLabels: [
- '0',
- '1',
- '2',
- '3',
- '4',
- '5',
- '6',
- '7',
- '8',
- '9',
- '10',
- '11',
- '12',
- '13',
- '14',
- '15',
- '16',
- '17',
- '18',
- '19',
- ],
- })
+ keyNoExistBaseMap.length &&
+ keyNoExistBaseMap.forEach(item => {
+ if (item.mapLayer) item.mapLayer.show = true
- customMapLayer[layerName] = viewer?.imageryLayers.addImageryProvider(imageryProvider)
+ viewer?.imageryLayers.lowerToBottom(item.mapLayer)
+ })
+ // 2D/3D切换
+ switchModel(store.state.common.mapSetting.visual)
+ }
- // const layerProvider = new Cesium.ArcGisMapServerImageryProvider({
- // url: options.src,
- // tilingScheme: new Cesium.GeographicTilingScheme()
- // })
- // customMapLayer[layerName] = viewer?.imageryLayers.addImageryProvider(layerProvider)
- }
- }
+ const filterLayer = (options) => {
+ const { bInvertColor, bFilterColor, filterColor } = options
+ const color = new Cesium.Color.fromCssColorString(filterColor)
+ const filterRGB = [
+ Math.round(color.red * 255),
+ Math.round(color.green * 255),
+ Math.round(color.blue * 255)
+ ]
+ let fragShader = viewer.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources
+ for (let i = 0; i < fragShader.length; i++) {
+ const strS = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
+ let strT = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
+ if (bInvertColor) {
+ strT += `
+ color.r = 1.0 - color.r;
+ color.g = 1.0 - color.g;
+ color.b = 1.0 - color.b;
+ `
+ }
+ if (bFilterColor) {
+ strT += `
+ color.r = color.r * ${filterRGB[0]}.0/255.0;
+ color.g = color.g * ${filterRGB[1]}.0/255.0;
+ color.b = color.b * ${filterRGB[2]}.0/255.0;
+ `
+ }
+ fragShader[i] = fragShader[i].replace(strS, strT)
+ }
+ }
- const removeCustomLayers = (layerName = '') => {
- if (layerName) {
- if (customMapLayer[layerName]) {
- viewer?.imageryLayers.remove(customMapLayer[layerName])
+ const addCustomLayers = (layerName, options) => {
+ if (options.type == 'arcgis') {
+ var imageryProvider = new Cesium.WebMapTileServiceImageryProvider({
+ url: options.src,
+ layer: options.title,
+ style: 'default',
+ format: 'image/png',
+ tileMatrixSetID: 'default',
+ tilingScheme: new Cesium.GeographicTilingScheme(),
+ tileMatrixLabels: [
+ '0',
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ '8',
+ '9',
+ '10',
+ '11',
+ '12',
+ '13',
+ '14',
+ '15',
+ '16',
+ '17',
+ '18',
+ '19',
+ ],
+ })
- delete customMapLayer[layerName]
- }
- } else {
- for (let k in customMapLayer) {
- viewer?.imageryLayers.remove(customMapLayer[k])
- }
+ customMapLayer[layerName] = viewer?.imageryLayers.addImageryProvider(imageryProvider)
- customMapLayer = {}
- }
- }
+ // const layerProvider = new Cesium.ArcGisMapServerImageryProvider({
+ // url: options.src,
+ // tilingScheme: new Cesium.GeographicTilingScheme()
+ // })
+ // customMapLayer[layerName] = viewer?.imageryLayers.addImageryProvider(layerProvider)
+ }
+ }
- // 切换不同背景图层
- const patternMap = () => {
- const imageryLayers = viewer?.scene.imageryLayers
- // 切换为标准图层
- if (store.state.common.mapSetting.mode === 0) {
- const tdtImg_c = imageryLayers?._layers.find(v => v.imageryProvider._layer === 'tdtImg_c')
- const tdtZwImg_c = imageryLayers?._layers.find(v => v.imageryProvider._layer === 'tdtZwImg_c')
- viewer?.imageryLayers.remove(tdtImg_c)
- viewer?.imageryLayers.remove(tdtZwImg_c)
- } else {
- const tdtStand_c = imageryLayers?._layers.find(
- v => v.imageryProvider.credit?.html === 'stand_tc'
- )
- const tdtStand_zj = imageryLayers?._layers.find(
- v => v.imageryProvider.credit?.html === 'stand_zj'
- )
- viewer?.imageryLayers.remove(tdtStand_c)
- viewer?.imageryLayers.remove(tdtStand_zj)
- }
- loadLAYER()
- }
+ const removeCustomLayers = (layerName = '') => {
+ if (layerName) {
+ if (customMapLayer[layerName]) {
+ viewer?.imageryLayers.remove(customMapLayer[layerName])
- // 生成或删除路网图层
- const roadPattern = flag => {
- if (store.state.common.mapSetting.mode === 0) return
- const imageryLayers = viewer?.scene.imageryLayers
- const tdtZwImg_c = imageryLayers?._layers.find(v => v.imageryProvider._layer === 'tdtZwImg_c')
- if (!flag) {
- viewer?.imageryLayers.remove(tdtZwImg_c)
- } else {
- viewer?.imageryLayers.addImageryProvider(annotation)
- }
- }
+ delete customMapLayer[layerName]
+ }
+ } else {
+ for (let k in customMapLayer) {
+ viewer?.imageryLayers.remove(customMapLayer[k])
+ }
- // 二维三维切换
- // 切换为二三维模式
- const switchModel = type => {
- switch (type) {
- case '2D':
- viewer?.scene.morphTo2D(0)
- // viewer?.scene.camera.setView({
- // orientation: {
- // pitch: Cesium.Math.toRadians(-60),
- // heading: Cesium.Math.toRadians(0),
- // },
- // });
- break
- case '3D':
- viewer?.scene.morphTo3D(0)
- // viewer?.scene.camera.setView({
- // orientation: {
- // pitch: Cesium.Math.toRadians(-90),
- // heading: Cesium.Math.toRadians(0),
- // },
- // });
- break
- default:
- break
- }
- }
+ customMapLayer = {}
+ }
+ }
- /**
- * @description: 地图暗黑模式切换
- * @param {*} viewer 地图实例
- * @param {*} options 配置项
- * @return {*}
- */
- const darkMap = (viewer, isDark = false, options) => {
- const defaultOptions = {
- brightness: 1,
- contrast: 1,
- gamma: 1,
- hue: 0,
- saturation: 1,
- }
+ // 切换不同背景图层
+ const patternMap = () => {
+ const imageryLayers = viewer?.scene.imageryLayers
+ // 切换为标准图层
+ if (store.state.common.mapSetting.mode === 0) {
+ const tdtImg_c = imageryLayers?._layers.find(v => v.imageryProvider._layer === 'tdtImg_c')
+ const tdtZwImg_c = imageryLayers?._layers.find(v => v.imageryProvider._layer === 'tdtZwImg_c')
+ viewer?.imageryLayers.remove(tdtImg_c)
+ viewer?.imageryLayers.remove(tdtZwImg_c)
+ } else {
+ const tdtStand_c = imageryLayers?._layers.find(
+ v => v.imageryProvider.credit?.html === 'stand_tc'
+ )
+ const tdtStand_zj = imageryLayers?._layers.find(
+ v => v.imageryProvider.credit?.html === 'stand_zj'
+ )
+ viewer?.imageryLayers.remove(tdtStand_c)
+ viewer?.imageryLayers.remove(tdtStand_zj)
+ }
+ loadLAYER()
+ }
- !isDark && Object.assign(options, defaultOptions)
+ // 生成或删除路网图层
+ const roadPattern = flag => {
+ if (store.state.common.mapSetting.mode === 0) return
+ const imageryLayers = viewer?.scene.imageryLayers
+ const tdtZwImg_c = imageryLayers?._layers.find(v => v.imageryProvider._layer === 'tdtZwImg_c')
+ if (!flag) {
+ viewer?.imageryLayers.remove(tdtZwImg_c)
+ } else {
+ viewer?.imageryLayers.addImageryProvider(annotation)
+ }
+ }
- const baseLayer = viewer.imageryLayers.get(0)
- baseLayer.brightness = options.brightness || 0
- baseLayer.contrast = options.contrast || 0
- baseLayer.gamma = options.gamma || 2
- baseLayer.hue = options.hue || 0
- baseLayer.saturation = options.saturation || 0
+ // 二维三维切换
+ // 切换为二三维模式
+ const switchModel = type => {
+ switch (type) {
+ case '2D':
+ viewer?.scene.morphTo2D(0)
+ // viewer?.scene.camera.setView({
+ // orientation: {
+ // pitch: Cesium.Math.toRadians(-60),
+ // heading: Cesium.Math.toRadians(0),
+ // },
+ // });
+ break
+ case '3D':
+ viewer?.scene.morphTo3D(0)
+ // viewer?.scene.camera.setView({
+ // orientation: {
+ // pitch: Cesium.Math.toRadians(-90),
+ // heading: Cesium.Math.toRadians(0),
+ // },
+ // });
+ break
+ default:
+ break
+ }
+ }
- const baseFragShader = viewer.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources
- for (let i = 0; i < baseFragShader.length; i++) {
- const strS = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
- let strT = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
- if (options.invertColor) {
- strT += `
+ /**
+ * @description: 地图暗黑模式切换
+ * @param {*} viewer 地图实例
+ * @param {*} options 配置项
+ * @return {*}
+ */
+ const darkMap = (viewer, isDark = false, options) => {
+ const defaultOptions = {
+ brightness: 1,
+ contrast: 1,
+ gamma: 1,
+ hue: 0,
+ saturation: 1,
+ }
+
+ !isDark && Object.assign(options, defaultOptions)
+
+ const baseLayer = viewer.imageryLayers.get(0)
+ baseLayer.brightness = options.brightness || 0
+ baseLayer.contrast = options.contrast || 0
+ baseLayer.gamma = options.gamma || 2
+ baseLayer.hue = options.hue || 0
+ baseLayer.saturation = options.saturation || 0
+
+ const baseFragShader = viewer.scene.globe._surfaceShaderSet.baseFragmentShaderSource.sources
+ for (let i = 0; i < baseFragShader.length; i++) {
+ const strS = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
+ let strT = 'color = czm_saturation(color, textureSaturation);\n#endif\n'
+ if (options.invertColor) {
+ strT += `
color.r = 1.0 - color.r;
color.g = 1.0 - color.g;
color.b = 1.0 - color.b;
`
- }
- if (options.filterRGB.length > 0) {
- strT += `
+ }
+ if (options.filterRGB.length > 0) {
+ strT += `
color.r = color.r * ${options.filterRGB[0]}.0/255.0;
color.g = color.g * ${options.filterRGB[1]}.0/255.0;
color.b = color.b * ${options.filterRGB[2]}.0/255.0;
`
- }
- if (!isDark) {
- //恢复默认
- baseFragShader[i] = baseFragShader[i].replace(strT, strS)
- } else {
- // 替换为暗黑模式
- baseFragShader[i] = baseFragShader[i].replace(strS, strT)
- }
- }
- }
+ }
+ if (!isDark) {
+ //恢复默认
+ baseFragShader[i] = baseFragShader[i].replace(strT, strS)
+ } else {
+ // 替换为暗黑模式
+ baseFragShader[i] = baseFragShader[i].replace(strS, strT)
+ }
+ }
+ }
- const switchDarkModel = () => {
- const isDark = store.state.common.mapSetting.isDark
- darkMap(viewer, isDark, {
- //反色
- invertColor: true,
- //滤色值 [176, 224, 230]
- filterRGB: [60, 145, 172],
- })
- }
+ const switchDarkModel = () => {
+ const isDark = store.state.common.mapSetting.isDark
+ darkMap(viewer, isDark, {
+ //反色
+ invertColor: true,
+ //滤色值 [176, 224, 230]
+ filterRGB: [60, 145, 172],
+ })
+ }
- //移除DataSource中所有实体
- const removeAllDataSource = () => {
- viewer?.dataSources.removeAll()
- }
+ //移除DataSource中所有实体
+ const removeAllDataSource = () => {
+ viewer?.dataSources.removeAll()
+ }
- // 清除所有标记点
- const removeAllPoint = () => {
- if (viewer) {
- viewer?.entities?.removeAll()
- // viewer?.scene?.primitives?.removeAll();
- }
- }
+ // 清除所有标记点
+ const removeAllPoint = () => {
+ if (viewer) {
+ viewer?.entities?.removeAll()
+ // viewer?.scene?.primitives?.removeAll();
+ }
+ }
- // 通过点ID删除
- const removeById = id => {
- viewer?.entities.removeById(id)
- const pointEntity = viewer?.entities.getById(id)
- if (pointEntity && pointEntity !== undefined) {
- viewer?.entities.remove(pointEntity)
- }
- }
+ // 通过点ID删除
+ const removeById = id => {
+ viewer?.entities.removeById(id)
+ const pointEntity = viewer?.entities.getById(id)
+ if (pointEntity && pointEntity !== undefined) {
+ viewer?.entities.remove(pointEntity)
+ }
+ }
- // 通过点ID获取实体
- const getEntityById = id => {
- const pointEntity = viewer?.entities.getById(id)
- return pointEntity
- }
+ // 通过点ID获取实体
+ const getEntityById = id => {
+ const pointEntity = viewer?.entities.getById(id)
+ return pointEntity
+ }
- // 添加标记点
- const addPoint = pointOption => {
- if (!pointOption.longitude && !pointOption.latitude) return
- const position = Cesium.Cartesian3.fromDegrees(
- pointOption.longitude,
- pointOption.latitude,
- pointOption?.altitude || 0
- )
- viewer?.entities.add({
- position,
- billboard: pointOption.billboard,
- point: pointOption.point,
- label: pointOption.label,
- id: pointOption.id,
- })
- }
+ // 添加标记点
+ const addPoint = pointOption => {
+ if (!pointOption.longitude && !pointOption.latitude) return
+ const position = Cesium.Cartesian3.fromDegrees(
+ pointOption.longitude,
+ pointOption.latitude,
+ pointOption?.altitude || 0
+ )
+ viewer?.entities.add({
+ position,
+ billboard: pointOption.billboard,
+ point: pointOption.point,
+ label: pointOption.label,
+ id: pointOption.id,
+ })
+ }
- const addPolyline = pointOption => {
- return viewer?.entities.add({
- polyline: pointOption.polyline,
- id: pointOption.id,
- })
- }
+ const addPolyline = pointOption => {
+ return viewer?.entities.add({
+ polyline: pointOption.polyline,
+ id: pointOption.id,
+ })
+ }
- // 更新图片实体位置
- function updateEntityPosition(longitude, latitude, id, params) {
- const entity = getEntityById(id)
- const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
- const heading = Cesium.Math.toRadians(-params.heading)
- if (Cesium.defined(entity)) {
- entity.position = position
- entity.billboard.rotation = heading
- }
- }
+ // 更新图片实体位置
+ function updateEntityPosition (longitude, latitude, id, params) {
+ const entity = getEntityById(id)
+ const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
+ const heading = Cesium.Math.toRadians(-params.heading)
+ if (Cesium.defined(entity)) {
+ entity.position = position
+ entity.billboard.rotation = heading
+ }
+ }
- // 飞行 flyto
- const flyTo = (pointOption, time = 4, height = 3000, orientation = {}) => {
- if (!pointOption.longitude && !pointOption.latitude) return
- const destination = Cesium.Cartesian3.fromDegrees(
- pointOption.longitude,
- pointOption.latitude,
- height
- )
- const duration = time
- viewer?.camera.flyTo({
- destination,
- duration,
- orientation,
- })
- }
+ // 飞行 flyto
+ const flyTo = (pointOption, time = 4, height = 3000, orientation = {}) => {
+ if (!pointOption.longitude && !pointOption.latitude) return
+ const destination = Cesium.Cartesian3.fromDegrees(
+ pointOption.longitude,
+ pointOption.latitude,
+ height
+ )
+ const duration = time
+ viewer?.camera.flyTo({
+ destination,
+ duration,
+ orientation,
+ })
+ }
- // 鼠标点击事件
- const addLeftClickEvent = (sid, cb, eventKey = 'handler') => {
- if (handlerEvents.handler) removeLeftClickEvent()
- if (handlerEvents[eventKey]) removeLeftClickEvent(eventKey)
+ // 鼠标点击事件
+ const addLeftClickEvent = (sid, cb, eventKey = 'handler') => {
+ if (handlerEvents.handler) removeLeftClickEvent()
+ if (handlerEvents[eventKey]) removeLeftClickEvent(eventKey)
- handlerEvents[eventKey] = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
- handlerEvents[eventKey].setInputAction(function (click) {
- const pick = viewer?.scene.pick(click.position)
+ handlerEvents[eventKey] = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
+ handlerEvents[eventKey].setInputAction(function (click) {
+ const pick = viewer?.scene.pick(click.position)
- if (pick && pick.primitive && pick.primitive?.customParams?.type == '3DTileset') {
- return cb(click, pick, viewer, handlerEvents[eventKey])
- }
+ if (pick && pick.primitive && pick.primitive?.customParams?.type == '3DTileset') {
+ return cb(click, pick, viewer, handlerEvents[eventKey])
+ }
- if (pick && pick.id && (pick.id._id === sid || pick.id._id.includes(sid))) {
- cb(click, pick, viewer, handlerEvents[eventKey])
- }
+ if (pick && pick.id && (pick.id._id === sid || pick.id._id.includes(sid))) {
+ cb(click, pick, viewer, handlerEvents[eventKey])
+ }
- if (sid === null) {
- cb(click, pick, viewer, handlerEvents[eventKey])
- }
- }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
- }
+ if (sid === null) {
+ cb(click, pick, viewer, handlerEvents[eventKey])
+ }
+ }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
+ }
- // 移除鼠标点击事件
- const removeLeftClickEvent = (eventKey = 'handler') => {
- if (handlerEvents[eventKey] == null) return
- handlerEvents[eventKey].removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
+ // 移除鼠标点击事件
+ const removeLeftClickEvent = (eventKey = 'handler') => {
+ if (handlerEvents[eventKey] == null) return
+ handlerEvents[eventKey].removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
- handlerEvents[eventKey] = null
- }
+ handlerEvents[eventKey] = null
+ }
- // 鼠标左键按下事件
- let leftDownClickHandler = { handler: null }
- const addLeftDownClickEvent = (sid, cb, eventKey = 'handler') => {
- if (leftDownClickHandler.handler) removeLeftDownClickEvent()
- if (leftDownClickHandler[eventKey]) removeLeftDownClickEvent(eventKey)
+ // 鼠标左键按下事件
+ let leftDownClickHandler = { handler: null }
+ const addLeftDownClickEvent = (sid, cb, eventKey = 'handler') => {
+ if (leftDownClickHandler.handler) removeLeftDownClickEvent()
+ if (leftDownClickHandler[eventKey]) removeLeftDownClickEvent(eventKey)
- leftDownClickHandler[eventKey] = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
+ leftDownClickHandler[eventKey] = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
- leftDownClickHandler[eventKey].setInputAction(function (click) {
- const pick = viewer?.scene.pick(click.position)
- cb(click, pick, viewer)
- }, Cesium.ScreenSpaceEventType.LEFT_DOWN)
- }
+ leftDownClickHandler[eventKey].setInputAction(function (click) {
+ const pick = viewer?.scene.pick(click.position)
+ cb(click, pick, viewer)
+ }, Cesium.ScreenSpaceEventType.LEFT_DOWN)
+ }
- // 移除鼠标左键按下事件
- const removeLeftDownClickEvent = (eventKey = 'handler') => {
- if (leftDownClickHandler[eventKey] == null) return
- leftDownClickHandler[eventKey].removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN)
+ // 移除鼠标左键按下事件
+ const removeLeftDownClickEvent = (eventKey = 'handler') => {
+ if (leftDownClickHandler[eventKey] == null) return
+ leftDownClickHandler[eventKey].removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN)
- leftDownClickHandler[eventKey] = null
- }
+ leftDownClickHandler[eventKey] = null
+ }
- // 鼠标右击事件
- let leftUpClickHandler = { handler: null }
- const addLeftUpClickEvent = (sid, cb, eventKey = 'handler') => {
- if (leftUpClickHandler.handler) removeLeftUpClickEvent()
- if (leftUpClickHandler[eventKey]) removeLeftUpClickEvent(eventKey)
+ // 鼠标右击事件
+ let leftUpClickHandler = { handler: null }
+ const addLeftUpClickEvent = (sid, cb, eventKey = 'handler') => {
+ if (leftUpClickHandler.handler) removeLeftUpClickEvent()
+ if (leftUpClickHandler[eventKey]) removeLeftUpClickEvent(eventKey)
- leftUpClickHandler[eventKey] = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
+ leftUpClickHandler[eventKey] = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
- leftUpClickHandler[eventKey].setInputAction(function (click) {
- const pick = viewer?.scene.pick(click.position)
- cb(click, pick, viewer)
- }, Cesium.ScreenSpaceEventType.LEFT_UP)
- }
+ leftUpClickHandler[eventKey].setInputAction(function (click) {
+ const pick = viewer?.scene.pick(click.position)
+ cb(click, pick, viewer)
+ }, Cesium.ScreenSpaceEventType.LEFT_UP)
+ }
- // 移除鼠标右键事件
- const removeLeftUpClickEvent = (eventKey = 'handler') => {
- if (leftUpClickHandler[eventKey] == null) return
- leftUpClickHandler[eventKey].removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP)
+ // 移除鼠标右键事件
+ const removeLeftUpClickEvent = (eventKey = 'handler') => {
+ if (leftUpClickHandler[eventKey] == null) return
+ leftUpClickHandler[eventKey].removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP)
- leftUpClickHandler[eventKey] = null
- }
+ leftUpClickHandler[eventKey] = null
+ }
- // 鼠标右击事件
- let rightClickHandler
- const addRightClickEvent = (sid, cb) => {
- if (rightClickHandler) removeRightClickEvent()
+ // 鼠标右击事件
+ let rightClickHandler
+ const addRightClickEvent = (sid, cb) => {
+ if (rightClickHandler) removeRightClickEvent()
- rightClickHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
+ rightClickHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
- rightClickHandler.setInputAction(function (click) {
- const pick = viewer?.scene.pick(click.position)
- cb(click, pick, viewer)
- }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
- }
+ rightClickHandler.setInputAction(function (click) {
+ const pick = viewer?.scene.pick(click.position)
+ cb(click, pick, viewer)
+ }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
+ }
- // 移除鼠标右键事件
- const removeRightClickEvent = () => {
- if (!rightClickHandler) return
- rightClickHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)
+ // 移除鼠标右键事件
+ const removeRightClickEvent = () => {
+ if (!rightClickHandler) return
+ rightClickHandler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)
- rightClickHandler = null
- }
+ rightClickHandler = null
+ }
- // 鼠标移动事件
- let LeftMounseHandler
- const addLeftmounseEvent = (sid, cb) => {
- if (LeftMounseHandler) removeLeftmounseEvent()
- LeftMounseHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
- LeftMounseHandler.setInputAction(function (event) {
- const cartesian3 = viewer?.scene.globe.pick(
- viewer?.camera.getPickRay(event.startPosition),
- viewer?.scene
- )
- cb(cartesian3, viewer)
- }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
- }
+ // 鼠标移动事件
+ let LeftMounseHandler
+ const addLeftmounseEvent = (sid, cb) => {
+ if (LeftMounseHandler) removeLeftmounseEvent()
+ LeftMounseHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
+ LeftMounseHandler.setInputAction(function (event) {
+ const cartesian3 = viewer?.scene.globe.pick(
+ viewer?.camera.getPickRay(event.startPosition),
+ viewer?.scene
+ )
+ cb(cartesian3, viewer)
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
+ }
- // 移除鼠标移动事件
- const removeLeftmounseEvent = () => {
- if (LeftMounseHandler == null) return
- LeftMounseHandler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)
+ // 移除鼠标移动事件
+ const removeLeftmounseEvent = () => {
+ if (LeftMounseHandler == null) return
+ LeftMounseHandler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)
- LeftMounseHandler = null
- }
+ LeftMounseHandler = null
+ }
- let MounseHandler
- const addMounseHandler = (sid, cb) => {
- if (MounseHandler == null) removeMounseEvent()
+ let MounseHandler
+ const addMounseHandler = (sid, cb) => {
+ if (MounseHandler == null) removeMounseEvent()
- MounseHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
+ MounseHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
- MounseHandler.setInputAction(function (movement) {
- let mouseInfo = _getMouseInfo(movement.endPosition)
+ MounseHandler.setInputAction(function (movement) {
+ let mouseInfo = _getMouseInfo(movement.endPosition)
- cb(mouseInfo, viewer)
- }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
- }
+ cb(mouseInfo, viewer)
+ }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
+ }
- const _getMouseInfo = position => {
- let scene = viewer.scene
- let target = scene.pick(position)
- let cartesian = undefined
- let surfaceCartesian = undefined
- let wgs84Position = undefined
- let wgs84SurfacePosition = undefined
- if (scene.pickPositionSupported) {
- cartesian = scene.pickPosition(position)
- }
- if (cartesian) {
- let c = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian)
- if (c) {
- wgs84Position = {
- lng: Cesium.Math.toDegrees(c.longitude),
- lat: Cesium.Math.toDegrees(c.latitude),
- alt: c.height,
- }
- }
- }
- if (
- scene.mode === Cesium.SceneMode.SCENE3D &&
- !(viewer.terrainProvider instanceof Cesium.EllipsoidTerrainProvider)
- ) {
- let ray = scene.camera.getPickRay(position)
- surfaceCartesian = scene.globe.pick(ray, scene)
- } else {
- surfaceCartesian = scene.camera.pickEllipsoid(position, Cesium.Ellipsoid.WGS84)
- }
- if (surfaceCartesian) {
- let c = Cesium.Ellipsoid.WGS84.cartesianToCartographic(surfaceCartesian)
- if (c) {
- wgs84SurfacePosition = {
- lng: Cesium.Math.toDegrees(c.longitude),
- lat: Cesium.Math.toDegrees(c.latitude),
- alt: c.height,
- }
- }
- }
+ const _getMouseInfo = position => {
+ let scene = viewer.scene
+ let target = scene.pick(position)
+ let cartesian = undefined
+ let surfaceCartesian = undefined
+ let wgs84Position = undefined
+ let wgs84SurfacePosition = undefined
+ if (scene.pickPositionSupported) {
+ cartesian = scene.pickPosition(position)
+ }
+ if (cartesian) {
+ let c = Cesium.Ellipsoid.WGS84.cartesianToCartographic(cartesian)
+ if (c) {
+ wgs84Position = {
+ lng: Cesium.Math.toDegrees(c.longitude),
+ lat: Cesium.Math.toDegrees(c.latitude),
+ alt: c.height,
+ }
+ }
+ }
+ if (
+ scene.mode === Cesium.SceneMode.SCENE3D &&
+ !(viewer.terrainProvider instanceof Cesium.EllipsoidTerrainProvider)
+ ) {
+ let ray = scene.camera.getPickRay(position)
+ surfaceCartesian = scene.globe.pick(ray, scene)
+ } else {
+ surfaceCartesian = scene.camera.pickEllipsoid(position, Cesium.Ellipsoid.WGS84)
+ }
+ if (surfaceCartesian) {
+ let c = Cesium.Ellipsoid.WGS84.cartesianToCartographic(surfaceCartesian)
+ if (c) {
+ wgs84SurfacePosition = {
+ lng: Cesium.Math.toDegrees(c.longitude),
+ lat: Cesium.Math.toDegrees(c.latitude),
+ alt: c.height,
+ }
+ }
+ }
- return {
- target: target,
- windowPosition: position,
- position: cartesian,
- wgs84Position: wgs84Position,
- surfacePosition: surfaceCartesian,
- wgs84SurfacePosition: wgs84SurfacePosition,
- }
- }
+ return {
+ target: target,
+ windowPosition: position,
+ position: cartesian,
+ wgs84Position: wgs84Position,
+ surfacePosition: surfaceCartesian,
+ wgs84SurfacePosition: wgs84SurfacePosition,
+ }
+ }
- // 移除鼠标移动事件
- const removeMounseEvent = () => {
- if (MounseHandler == null) return
- MounseHandler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)
+ // 移除鼠标移动事件
+ const removeMounseEvent = () => {
+ if (MounseHandler == null) return
+ MounseHandler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)
- MounseHandler = null
- }
+ MounseHandler = null
+ }
- // 视角变化时间
- let mapViewHandler = null
- const addCameraMoveEvent = cb => {
- if (mapViewHandler) removeCameraMoveEvent()
+ // 视角变化时间
+ let mapViewHandler = null
+ const addCameraMoveEvent = cb => {
+ if (mapViewHandler) removeCameraMoveEvent()
- mapViewHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
- mapViewHandler.setInputAction(event => {
- cb(event)
- }, Cesium.ScreenSpaceEventType.WHEEL)
- }
+ mapViewHandler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
+ mapViewHandler.setInputAction(event => {
+ cb(event)
+ }, Cesium.ScreenSpaceEventType.WHEEL)
+ }
- const removeCameraMoveEvent = () => {
- if (mapViewHandler == null) return
- mapViewHandler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL)
- mapViewHandler = null
- }
+ const removeCameraMoveEvent = () => {
+ if (mapViewHandler == null) return
+ mapViewHandler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL)
+ mapViewHandler = null
+ }
- // 添加entity
- const addCustomEntityDataSource = (sourceName, entities) => {
- if (!customEntityDataSources[sourceName]) {
- customEntityDataSources[sourceName] = new Cesium.CustomDataSource()
- window.$viewer?.dataSources.add(customEntityDataSources[sourceName])
- }
+ // 添加entity
+ const addCustomEntityDataSource = (sourceName, entities) => {
+ if (!customEntityDataSources[sourceName]) {
+ customEntityDataSources[sourceName] = new Cesium.CustomDataSource()
+ window.$viewer?.dataSources.add(customEntityDataSources[sourceName])
+ }
- let entity = customEntityDataSources[sourceName].entities.add(entities)
+ let entity = customEntityDataSources[sourceName].entities.add(entities)
- return entity
- }
+ return entity
+ }
- const clearCustomEntityDataSource = sourceName => {
- if (customEntityDataSources[sourceName]) {
- customEntityDataSources[sourceName]?.entities.removeAll()
- }
- }
+ const clearCustomEntityDataSource = sourceName => {
+ if (customEntityDataSources[sourceName]) {
+ customEntityDataSources[sourceName]?.entities.removeAll()
+ }
+ }
- const removeAllCustomEntityDataSource = sourceName => {
- if (customEntityDataSources[sourceName]) {
- customEntityDataSources[sourceName]?.entities.removeAll()
- window.$viewer.dataSources.remove(customEntityDataSources[sourceName])
- delete customEntityDataSources[sourceName]
- }
- }
+ const removeAllCustomEntityDataSource = sourceName => {
+ if (customEntityDataSources[sourceName]) {
+ customEntityDataSources[sourceName]?.entities.removeAll()
+ window.$viewer.dataSources.remove(customEntityDataSources[sourceName])
+ delete customEntityDataSources[sourceName]
+ }
+ }
- // 添加entity
- const addCustomImageryProviderDataSource = imageryLayers => {
- return viewer?.imageryLayers.addImageryProvider(imageryLayers)
- }
+ // 添加entity
+ const addCustomImageryProviderDataSource = imageryLayers => {
+ return viewer?.imageryLayers.addImageryProvider(imageryLayers)
+ }
- const showCustomImageryProviderDataSource = (imageryLayers, show) => {
- if (imageryLayers) {
- imageryLayers.show = show
- }
- }
+ const showCustomImageryProviderDataSource = (imageryLayers, show) => {
+ if (imageryLayers) {
+ imageryLayers.show = show
+ }
+ }
- const removeAllCustomImageryProviderDataSource = imageryLayers => {
- if (imageryLayers) {
- viewer?.imageryLayers.remove(imageryLayers)
- }
- }
+ const removeAllCustomImageryProviderDataSource = imageryLayers => {
+ if (imageryLayers) {
+ viewer?.imageryLayers.remove(imageryLayers)
+ }
+ }
- // 添加范围的圆
- const addEllipse = ({ longitude, latitude, dist = 7000 }) => {
- if (!longitude && !latitude) return
- // 定义起点位置
- const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
- // 画圆
+ // 添加范围的圆
+ const addEllipse = ({ longitude, latitude, dist = 7000 }) => {
+ if (!longitude && !latitude) return
+ // 定义起点位置
+ const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
+ // 画圆
- viewer?.entities.add({
- position,
- id: 'rangeEllipse',
- name: 'rangeEllipse',
- ellipse: {
- semiMinorAxis: dist,
- semiMajorAxis: dist,
- outline: true,
- material: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.3),
- },
- })
- // 添加距离虚线
- // addDistLine({ longitude, latitude, dist });
- }
+ viewer?.entities.add({
+ position,
+ id: 'rangeEllipse',
+ name: 'rangeEllipse',
+ ellipse: {
+ semiMinorAxis: dist,
+ semiMajorAxis: dist,
+ outline: true,
+ material: Cesium.Color.CORNFLOWERBLUE.withAlpha(0.3),
+ },
+ })
+ // 添加距离虚线
+ // addDistLine({ longitude, latitude, dist });
+ }
- const addDistLine = ({ longitude, latitude, dist = 7 }) => {
- // 定义起点位置
- const startPosition = Cesium.Cartesian3.fromDegrees(longitude, latitude)
- // 计算目标位置(7公里处)
- const offsetCartesian = Cesium.Cartesian3.fromDegrees(
- longitude,
- latitude +
- Cesium.Math.toDegrees(
- dist / (Cesium.Ellipsoid.WGS84.maximumRadius * Math.cos(Cesium.Math.toRadians(latitude)))
- ) // 7公里的偏移
- )
- // 将目标位置转换为经纬度
- // const offsetCartographic = Cesium.Cartographic.fromCartesian(offsetCartesian);
- // const offsetLongitude = Cesium.Math.toDegrees(offsetCartographic.longitude);
- // const offsetLatitude = Cesium.Math.toDegrees(offsetCartographic.latitude);
- addPolyline({
- id: 'dist_line',
- polyline: {
- width: 5,
- positions: [startPosition, offsetCartesian],
- material: new Cesium.PolylineGlowMaterialProperty({
- glowPower: 0.2,
- taperPower: 0.5,
- color: Cesium.Color.CORNFLOWERBLUE,
- }),
- },
- })
- }
+ const addDistLine = ({ longitude, latitude, dist = 7 }) => {
+ // 定义起点位置
+ const startPosition = Cesium.Cartesian3.fromDegrees(longitude, latitude)
+ // 计算目标位置(7公里处)
+ const offsetCartesian = Cesium.Cartesian3.fromDegrees(
+ longitude,
+ latitude +
+ Cesium.Math.toDegrees(
+ dist / (Cesium.Ellipsoid.WGS84.maximumRadius * Math.cos(Cesium.Math.toRadians(latitude)))
+ ) // 7公里的偏移
+ )
+ // 将目标位置转换为经纬度
+ // const offsetCartographic = Cesium.Cartographic.fromCartesian(offsetCartesian);
+ // const offsetLongitude = Cesium.Math.toDegrees(offsetCartographic.longitude);
+ // const offsetLatitude = Cesium.Math.toDegrees(offsetCartographic.latitude);
+ addPolyline({
+ id: 'dist_line',
+ polyline: {
+ width: 5,
+ positions: [startPosition, offsetCartesian],
+ material: new Cesium.PolylineGlowMaterialProperty({
+ glowPower: 0.2,
+ taperPower: 0.5,
+ color: Cesium.Color.CORNFLOWERBLUE,
+ }),
+ },
+ })
+ }
- // 添加圆
- const addCircle = option => {
- if (!option.longitude && !option.latitude) return
- // 定义起点位置
- const { longitude, latitude } = option
- const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
- viewer.entities.add({
- position,
- id: option.id,
- ellipse: {
- semiMinorAxis: option.radius,
- semiMajorAxis: option.radius,
- height: option.height || 120,
- material: Cesium.Color.fromCssColorString(option.color).withAlpha(0.1),
- outline: true,
- outlineColor: Cesium.Color.fromCssColorString(option.color),
- outlineWidth: 3,
- },
- })
- }
+ // 添加圆
+ const addCircle = option => {
+ if (!option.longitude && !option.latitude) return
+ // 定义起点位置
+ const { longitude, latitude } = option
+ const position = Cesium.Cartesian3.fromDegrees(longitude, latitude)
+ viewer.entities.add({
+ position,
+ id: option.id,
+ ellipse: {
+ semiMinorAxis: option.radius,
+ semiMajorAxis: option.radius,
+ height: option.height || 120,
+ material: Cesium.Color.fromCssColorString(option.color).withAlpha(0.1),
+ outline: true,
+ outlineColor: Cesium.Color.fromCssColorString(option.color),
+ outlineWidth: 3,
+ },
+ })
+ }
- //
- /**
- * @description: 添加矩形
- * @param {*} option { id: string, color: string, positions: array[ lng,lat,height ] }
- * @return {*} void 0
- */
- const addPolygon = option => {
- if (option.positions.length === 0) return
+ //
+ /**
+ * @description: 添加矩形
+ * @param {*} option { id: string, color: string, positions: array[ lng,lat,height ] }
+ * @return {*} void 0
+ */
+ const addPolygon = option => {
+ if (option.positions.length === 0) return
- let zIndex = {}
+ let zIndex = {}
- if (option.zIndex) {
- zIndex = {
- zIndex: option.zIndex,
- }
- }
+ if (option.zIndex) {
+ zIndex = {
+ zIndex: option.zIndex,
+ }
+ }
- // 定义起点位置
- viewer.entities.add({
- id: option.id,
- polygon: {
- hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(option.positions),
- material: Cesium.Color.fromCssColorString(option.color).withAlpha(0.1),
- extrudedHeight: 0,
- outline: true,
- outlineColor: Cesium.Color.fromCssColorString(option.color),
- outlineWidth: 3,
- },
- ...zIndex,
- })
- }
+ // 定义起点位置
+ viewer.entities.add({
+ id: option.id,
+ polygon: {
+ hierarchy: Cesium.Cartesian3.fromDegreesArrayHeights(option.positions),
+ material: Cesium.Color.fromCssColorString(option.color).withAlpha(0.1),
+ extrudedHeight: 0,
+ outline: true,
+ outlineColor: Cesium.Color.fromCssColorString(option.color),
+ outlineWidth: 3,
+ },
+ ...zIndex,
+ })
+ }
- // Cesium矢量切片是否加载完成
- const isLoadingCompleted = () => {
- return new Promise((resolve, reject) => {
- const helper = new Cesium.EventHelper()
- helper.add(viewer?.scene.globe.tileLoadProgressEvent, function (e) {
- if (e === 0) {
- resolve(true)
- }
- })
- })
- }
+ // Cesium矢量切片是否加载完成
+ const isLoadingCompleted = () => {
+ return new Promise((resolve, reject) => {
+ const helper = new Cesium.EventHelper()
+ helper.add(viewer?.scene.globe.tileLoadProgressEvent, function (e) {
+ if (e === 0) {
+ resolve(true)
+ }
+ })
+ })
+ }
- // 获取屏幕四个角经纬度
- const getScreenCorner = () => {
- const camera = viewer.scene.camera
- const canvas = viewer.canvas
+ // 获取屏幕四个角经纬度
+ const getScreenCorner = () => {
+ const camera = viewer.scene.camera
+ const canvas = viewer.canvas
- // 获取屏幕左下角和右上角的世界坐标
- const leftBottom = new Cesium.Cartesian2(0, canvas.clientHeight)
- const rightTop = new Cesium.Cartesian2(canvas.clientWidth, 0)
+ // 获取屏幕左下角和右上角的世界坐标
+ const leftBottom = new Cesium.Cartesian2(0, canvas.clientHeight)
+ const rightTop = new Cesium.Cartesian2(canvas.clientWidth, 0)
- // 将屏幕坐标转为世界坐标
- const leftBottomWorld = camera.pickEllipsoid(leftBottom, viewer.scene.globe.ellipsoid)
- const rightTopWorld = camera.pickEllipsoid(rightTop, viewer.scene.globe.ellipsoid)
+ // 将屏幕坐标转为世界坐标
+ const leftBottomWorld = camera.pickEllipsoid(leftBottom, viewer.scene.globe.ellipsoid)
+ const rightTopWorld = camera.pickEllipsoid(rightTop, viewer.scene.globe.ellipsoid)
- // 将世界坐标转为经纬度
- const leftBottomCartographic =
- viewer.scene.globe.ellipsoid.cartesianToCartographic(leftBottomWorld)
- const rightTopCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(rightTopWorld)
+ // 将世界坐标转为经纬度
+ const leftBottomCartographic =
+ viewer.scene.globe.ellipsoid.cartesianToCartographic(leftBottomWorld)
+ const rightTopCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(rightTopWorld)
- // 获取经纬度
- const leftBottomLonLat = [
- Cesium.Math.toDegrees(leftBottomCartographic.longitude),
- Cesium.Math.toDegrees(leftBottomCartographic.latitude),
- ]
- const rightTopLonLat = [
- Cesium.Math.toDegrees(rightTopCartographic.longitude),
- Cesium.Math.toDegrees(rightTopCartographic.latitude),
- ]
+ // 获取经纬度
+ const leftBottomLonLat = [
+ Cesium.Math.toDegrees(leftBottomCartographic.longitude),
+ Cesium.Math.toDegrees(leftBottomCartographic.latitude),
+ ]
+ const rightTopLonLat = [
+ Cesium.Math.toDegrees(rightTopCartographic.longitude),
+ Cesium.Math.toDegrees(rightTopCartographic.latitude),
+ ]
- // 返回四个角的经纬度
- return {
- lb: leftBottomLonLat,
- rb: [rightTopLonLat[0], leftBottomLonLat[1]], // 右下角
- rt: rightTopLonLat,
- lt: [leftBottomLonLat[0], rightTopLonLat[1]], // 左上角
- }
- }
+ // 返回四个角的经纬度
+ return {
+ lb: leftBottomLonLat,
+ rb: [rightTopLonLat[0], leftBottomLonLat[1]], // 右下角
+ rt: rightTopLonLat,
+ lt: [leftBottomLonLat[0], rightTopLonLat[1]], // 左上角
+ }
+ }
- // 加载3D建筑模型
- let tileset = null
+ // 加载3D建筑模型
+ let tileset = null
- function setBuilding3dModel() {
- try {
- const resource = Cesium.IonResource.fromAssetId(96188)
- tileset = new Cesium.Cesium3DTileset({
- url: resource,
- })
+ function setBuilding3dModel () {
+ try {
+ const resource = Cesium.IonResource.fromAssetId(96188)
+ tileset = new Cesium.Cesium3DTileset({
+ url: resource,
+ })
- tileset.customParams = {
- type: '3DTileset',
- }
+ tileset.customParams = {
+ type: '3DTileset',
+ }
- viewer.scene.primitives.add(tileset)
- } catch (error) {
- console.log(`Error loading tileset: ${error}`)
- }
- }
+ viewer.scene.primitives.add(tileset)
+ } catch (error) {
+ console.log(`Error loading tileset: ${error}`)
+ }
+ }
- function removeBuilding3dModel() {
- if (tileset) {
- viewer.scene.primitives.remove(tileset)
- }
- }
+ function removeBuilding3dModel () {
+ if (tileset) {
+ viewer.scene.primitives.remove(tileset)
+ }
+ }
- const viewerDestory = () => {
- viewer && viewer.destroy()
- viewer = null
- window.$viewer = null
- }
+ const viewerDestory = () => {
+ viewer && viewer.destroy()
+ viewer = null
+ window.$viewer = null
+ }
- let tilesetArr = []
+ let tilesetArr = []
- const add3Dtileset = () => {
- let url = '/3Dtile/kjds/tileset.json'
+ const add3Dtileset = () => {
+ let url = '/3Dtile/kjds/tileset.json'
- let tileset = new Cesium.Cesium3DTileset({
- url: url,
- })
+ let tileset = new Cesium.Cesium3DTileset({
+ url: url,
+ })
- tileset.customParams = {
- type: '3DTileset',
- }
+ tileset.customParams = {
+ type: '3DTileset',
+ }
- tilesetArr.push(tileset)
+ tilesetArr.push(tileset)
- tilesetArr.forEach(i => viewer?.scene.primitives.add(i))
- }
+ tilesetArr.forEach(i => viewer?.scene.primitives.add(i))
+ }
- const remove3Dtileset = () => {
- if (tilesetArr.length > 0) {
- tilesetArr.forEach(i => viewer.scene.primitives.remove(i))
- }
+ const remove3Dtileset = () => {
+ if (tilesetArr.length > 0) {
+ tilesetArr.forEach(i => viewer.scene.primitives.remove(i))
+ }
- tilesetArr = []
- }
+ tilesetArr = []
+ }
- let pointEditHandler
- // 航点航线编辑相关事件
- const pointInitEvent = (lefet_down, mouse_move, left_up) => {
- if (!pointEditHandler) {
- pointEditHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
- }
+ let pointEditHandler
+ // 航点航线编辑相关事件
+ const pointInitEvent = (lefet_down, mouse_move, left_up) => {
+ if (!pointEditHandler) {
+ pointEditHandler = new Cesium.ScreenSpaceEventHandler(viewer?.scene.canvas)
+ }
- const events = {
- lefet_down,
- mouse_move,
- left_up,
- }
+ const events = {
+ lefet_down,
+ mouse_move,
+ left_up,
+ }
- pointEditBindEvent(events)
- pointEditBindEvent(events, Cesium.KeyboardEventModifier.CTRL)
- pointEditBindEvent(events, Cesium.KeyboardEventModifier.ALT)
- pointEditBindEvent(events, Cesium.KeyboardEventModifier.SHIFT)
- pointEditBindEvent(events, Cesium.KeyboardEventModifier.META)
- }
+ pointEditBindEvent(events)
+ pointEditBindEvent(events, Cesium.KeyboardEventModifier.CTRL)
+ pointEditBindEvent(events, Cesium.KeyboardEventModifier.ALT)
+ pointEditBindEvent(events, Cesium.KeyboardEventModifier.SHIFT)
+ pointEditBindEvent(events, Cesium.KeyboardEventModifier.META)
+ }
- const pointEditBindEvent = (events, e) => {
- if (pointEditHandler) {
- pointEditHandler.setInputAction(
- events.lefet_down(e),
- Cesium.ScreenSpaceEventType.LEFT_DOWN,
- e
- )
- pointEditHandler.setInputAction(
- events.mouse_move(e),
- Cesium.ScreenSpaceEventType.MOUSE_MOVE,
- e
- )
- pointEditHandler.setInputAction(events.left_up(e), Cesium.ScreenSpaceEventType.LEFT_UP, e)
- }
- }
+ const pointEditBindEvent = (events, e) => {
+ if (pointEditHandler) {
+ pointEditHandler.setInputAction(
+ events.lefet_down(e),
+ Cesium.ScreenSpaceEventType.LEFT_DOWN,
+ e
+ )
+ pointEditHandler.setInputAction(
+ events.mouse_move(e),
+ Cesium.ScreenSpaceEventType.MOUSE_MOVE,
+ e
+ )
+ pointEditHandler.setInputAction(events.left_up(e), Cesium.ScreenSpaceEventType.LEFT_UP, e)
+ }
+ }
- const pointUnInitEvent = () => {
- pointEditUnBindEvent()
- pointEditUnBindEvent(Cesium.KeyboardEventModifier.CTRL)
- pointEditUnBindEvent(Cesium.KeyboardEventModifier.ALT)
- pointEditUnBindEvent(Cesium.KeyboardEventModifier.SHIFT)
- pointEditUnBindEvent(Cesium.KeyboardEventModifier.META)
+ const pointUnInitEvent = () => {
+ pointEditUnBindEvent()
+ pointEditUnBindEvent(Cesium.KeyboardEventModifier.CTRL)
+ pointEditUnBindEvent(Cesium.KeyboardEventModifier.ALT)
+ pointEditUnBindEvent(Cesium.KeyboardEventModifier.SHIFT)
+ pointEditUnBindEvent(Cesium.KeyboardEventModifier.META)
- pointEditHandler = null
- }
+ pointEditHandler = null
+ }
- const pointEditUnBindEvent = e => {
- pointEditHandler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN, e)
- pointEditHandler?.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE, e)
- pointEditHandler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP, e)
- }
+ const pointEditUnBindEvent = e => {
+ pointEditHandler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN, e)
+ pointEditHandler?.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE, e)
+ pointEditHandler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP, e)
+ }
- return {
- _init,
- patternMap,
- loadLAYER,
- roadPattern,
- switchModel,
- switchDarkModel,
- removeAllDataSource,
- removeAllPoint,
- removeById,
- getEntityById,
- addPoint,
- addPolyline,
- updateEntityPosition,
- flyTo,
- addLeftClickEvent,
- removeLeftClickEvent,
- addRightClickEvent,
- removeRightClickEvent,
- addLeftmounseEvent,
- removeLeftmounseEvent,
+ return {
+ _init,
+ patternMap,
+ loadLAYER,
+ roadPattern,
+ switchModel,
+ switchDarkModel,
+ removeAllDataSource,
+ removeAllPoint,
+ removeById,
+ getEntityById,
+ addPoint,
+ addPolyline,
+ updateEntityPosition,
+ flyTo,
+ addLeftClickEvent,
+ removeLeftClickEvent,
+ addRightClickEvent,
+ removeRightClickEvent,
+ addLeftmounseEvent,
+ removeLeftmounseEvent,
- addLeftUpClickEvent,
- removeLeftUpClickEvent,
+ addLeftUpClickEvent,
+ removeLeftUpClickEvent,
- addLeftDownClickEvent,
- removeLeftDownClickEvent,
+ addLeftDownClickEvent,
+ removeLeftDownClickEvent,
- addMounseHandler,
- removeMounseEvent,
+ addMounseHandler,
+ removeMounseEvent,
- addCameraMoveEvent,
- removeCameraMoveEvent,
- addCircle,
- addPolygon,
- addEllipse,
- isLoadingCompleted,
- getScreenCorner,
- setBuilding3dModel,
- removeBuilding3dModel,
+ addCameraMoveEvent,
+ removeCameraMoveEvent,
+ addCircle,
+ addPolygon,
+ addEllipse,
+ isLoadingCompleted,
+ getScreenCorner,
+ setBuilding3dModel,
+ removeBuilding3dModel,
- viewerDestory,
+ viewerDestory,
- globalCesium: window.globalCesium || Cesium,
+ globalCesium: window.globalCesium || Cesium,
- addCustomEntityDataSource,
- clearCustomEntityDataSource,
- removeAllCustomEntityDataSource,
- _getMouseInfo,
+ addCustomEntityDataSource,
+ clearCustomEntityDataSource,
+ removeAllCustomEntityDataSource,
+ _getMouseInfo,
- addCustomImageryProviderDataSource,
- showCustomImageryProviderDataSource,
- removeAllCustomImageryProviderDataSource,
+ addCustomImageryProviderDataSource,
+ showCustomImageryProviderDataSource,
+ removeAllCustomImageryProviderDataSource,
- addCustomLayers,
- removeCustomLayers,
- add3Dtileset,
- remove3Dtileset,
+ addCustomLayers,
+ removeCustomLayers,
+ add3Dtileset,
+ remove3Dtileset,
- // 航线规划---航点航线
- pointInitEvent,
- pointUnInitEvent,
- }
+ // 航线规划---航点航线
+ pointInitEvent,
+ pointUnInitEvent,
+ }
}
--
Gitblit v1.9.3