From 17a81d641608545682e3f79f7c6090cac48fe81a Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 15 Sep 2025 18:10:01 +0800
Subject: [PATCH] feat:去除高亮
---
src/pages/map/components/scomponents/layersControl.vue | 2236 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 1,199 insertions(+), 1,037 deletions(-)
diff --git a/src/pages/map/components/scomponents/layersControl.vue b/src/pages/map/components/scomponents/layersControl.vue
index 7c297c2..7b1f4a9 100644
--- a/src/pages/map/components/scomponents/layersControl.vue
+++ b/src/pages/map/components/scomponents/layersControl.vue
@@ -2,51 +2,52 @@
* @Author: shuishen 1109946754@qq.com
* @Date: 2024-10-31 10:47:29
* @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2024-12-10 14:33:31
+ * @LastEditTime: 2025-09-15 18:09:46
* @FilePath: \bigScreen\src\pages\map\components\scomponents\layersControl.vue
* @Description:
*
* Copyright (c) 2024 by shuishen, All Rights Reserved.
-->
<template>
- <public-box v-show="showLayerControl">
- <template #name>
- <div class="name"><i class="fa fa-tasks"></i> 图层</div>
- </template>
+ <public-box v-show="showLayerControl">
+ <template #name>
+ <div class="name"><i class="fa fa-tasks"></i> 图层</div>
+ </template>
- <template #close>
- <div class="close cursor-p" @click="emit('close', 'layers')"><i class="fa fa-close"></i></div>
- </template>
+ <template #close>
+ <div class="close cursor-p" @click="emit('close', 'layers')"><i class="fa fa-close"></i></div>
+ </template>
- <template #content>
- <div class="tree-content">
- <el-tree ref="treeRef" :data="data" draggable="" show-checkbox node-key="id" default-expand-all
- :default-checked-keys="indexPoint" :props="defaultProps" :indent="treeProps['indent']"
- @check="handleCheckChange">
- <template v-slot:default="{ node }">
- <element-tree-line :node="node" :showLabelLine="treeProps['showLabelLine']" :indent="treeProps['indent']">
- <!-- 自定义label的slot -->
- <template v-slot:node-label>
- <span style="font-size: 12px">
- {{ node.label }}
- <i class="el-icon-eleme"></i></span>
- </template>
- <!-- 在右边追加内容的slot -->
- <!-- <template v-slot:after-node-label>
+ <template #content>
+ <div class="tree-content">
+ <el-tree ref="treeRef" :data="data" draggable="" show-checkbox node-key="id" default-expand-all
+ :default-checked-keys="indexPoint" :props="defaultProps" :indent="treeProps['indent']"
+ @check="handleCheckChange">
+ <template v-slot:default="{ node }">
+ <element-tree-line :node="node" :showLabelLine="treeProps['showLabelLine']"
+ :indent="treeProps['indent']">
+ <!-- 自定义label的slot -->
+ <template v-slot:node-label>
+ <span style="font-size: 12px">
+ {{ node.label }}
+ <i class="el-icon-eleme"></i></span>
+ </template>
+ <!-- 在右边追加内容的slot -->
+ <!-- <template v-slot:after-node-label>
<span style="padding-right: 10px">
<el-button type="primary" size="mini" @click.stop="openDrawer(node)">新增子节点</el-button>
<el-button type="primary" size="mini" @click.stop="openDrawer(node)">修改</el-button>
<el-button type="danger" size="mini" @click.stop="openDialog">删除</el-button></span>
</template> -->
- </element-tree-line>
- </template>
- </el-tree>
- </div>
- </template>
- </public-box>
+ </element-tree-line>
+ </template>
+ </el-tree>
+ </div>
+ </template>
+ </public-box>
- <panorama v-show="panoramaShow" :title="panoramaTitle" :url="panoramaUrl" @closePanoramaPopup="closePanoramaPopup">
- </panorama>
+ <panorama v-show="panoramaShow" :title="panoramaTitle" :url="panoramaUrl" @closePanoramaPopup="closePanoramaPopup">
+ </panorama>
</template>
<script setup>
@@ -59,18 +60,18 @@
window.$viewer.addLayer(planToBuild)
const {
- show: showLayerControl
+ show: showLayerControl
} = defineProps({
- show: {
- default: false
- }
+ show: {
+ default: false
+ }
})
const emit = defineEmits(['close'])
import panorama from './popup/panorama.vue'
import { getPage } from '@/api/indParkInfo'
import { getPage as getfirmPage } from '@/api/firmInfo/firmInfo'
-import { getList, getGouQu } from "@/api/space/space"
+import { getList, getGouQu, updateSpace } from "@/api/space/space"
import { getList as getRiskList } from "@/api/riskSource/riskSource"
import { getPanoramaList } from "@/api/panorama/"
import yqfw from "@/assets/json/yqfw"
@@ -78,22 +79,31 @@
// import rqgw from "@/assets/json/rqgw"
import wsgw from "@/assets/json/wsgw"
import ysgw from "@/assets/json/ysgw"
+import qyjgx from "@/assets/json/qyjgx"
+import lx from "@/assets/json/lx"
+import gt from "@/assets/json/gt"
+import track from "@/assets/json/track"
import { onUnmounted } from 'vue'
import EventBus from 'utils/bus'
import { usePointStore } from 'store/usepoint'
const pointStore = usePointStore()
+import { useMap } from 'store/map'
+const mapStore = useMap()
import { useRouter } from 'vue-router'
const router = useRouter()
+import {
+ ElMessage
+} from 'element-plus'
const { VITE_APP_BASE } = import.meta.env
// , '7',
-let indexPoint = ref(['1', '5', '7'])
+let indexPoint = ref(['1', '5', '7', '8'])
const treeRef = ref(null)
const treeProps = {
- indent: 16,
- showLabelLine: true,
+ indent: 16,
+ showLabelLine: true,
}
// 全景相关
@@ -101,705 +111,620 @@
const panoramaTitle = ref('')
const panoramaUrl = ref('')
const closePanoramaPopup = () => {
- panoramaShow.value = false
+ panoramaShow.value = false
}
+const baseRcImages = new window.$Cesium.WebMapTileServiceImageryProvider({
+ url: '/arcgis117/rest/services/DTFW/rcgyyyx/MapServer/WMTS',
+ layer: 'DTFW_rcgyyyx',
+ style: 'default',
+ format: 'image/png',
+ tileMatrixSetID: 'default028mm',
+ tilingScheme: new window.$Cesium.GeographicTilingScheme(),
+ tileMatrixLabels: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19']
+})
+
const data = [
- {
- id: '1',
- label: '园区倾斜摄影',
- type: 'layer',
- subType: '3Dtile',
- urlData: [
- {
- url: VITE_APP_BASE + 'mx/tile_01/tileset.json',
- label: 'tile_01'
- },
- {
- url: VITE_APP_BASE + 'mx/tile_02/tileset.json',
- label: 'tile_02'
- },
- {
- url: VITE_APP_BASE + 'mx/tile_03/tileset.json',
- label: 'tile_03'
- },
- {
- url: VITE_APP_BASE + 'mx/tile_04/tileset.json',
- label: 'tile_04'
- },
- {
- url: VITE_APP_BASE + 'mx/tile_05/tileset.json',
- label: 'tile_05'
- },
- ],
- layerName: 'hgyq'
- },
+ {
+ id: '1',
+ label: '园区倾斜摄影',
+ type: 'layer',
+ subType: '3Dtile',
+ urlData: [
+ {
+ url: '/3Dtile/rcmx_t/part1/tileset.json',
+ label: 'part1'
+ },
+ {
+ url: '/3Dtile/rcmx_t/part2/tileset.json',
+ label: 'part2'
+ },
- {
- id: '2',
- label: '企业分布',
- type: 'layer',
- subType: 'labelPoint',
- method: getPage,
- params: {
- size: 1000
+ ],
+ layerName: 'hgyq'
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/qy.png',
- className: 'qyfb-box',
- showPanel: false,
- layerName: 'qyfb'
- },
- {
- id: '3',
- label: '应急空间',
- children: [
- {
- parentId: '3',
- id: '3-1',
- label: '应急池',
+ {
+ id: '2',
+ label: '企业分布',
+ type: 'layer',
+ subType: 'labelPoint',
+ customWx: true,
+ method: getPage,
+ params: {
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/qy.png',
+ className: 'qyfb-box',
+ showPanel: false,
+ layerName: 'qyfb'
+ },
+
+ {
+ id: '3',
+ label: '应急空间',
children: [
- {
- parentId: '3-1',
- id: '3-1-1',
- label: '园区',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 1,
- size: 1000,
- category: 1
+ {
+ parentId: '3',
+ id: '3-1',
+ label: '雨水池',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 1,
+ size: 1000,
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
+ className: 'yjc-box',
+ showPanel: false,
+ layerName: 'cq-yssjc',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
+ <div>企业名称:${attrParams.firmName}</div>
+ <div>作用:${attrParams.mainFuncName}</div>
+ <div>容量:${attrParams.capacity}(m³)</div>
+ </div>`
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
+ ${iconEl}
+ </div>`
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
- className: 'yjc-box',
- showPanel: false,
- layerName: 'yjc-yq',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+
+ {
+ parentId: '3',
+ id: '3-2',
+ label: '应急池',
+ type: 'layer',
+ subType: 'labelPoint',
+ customWx: true,
+ method: getList,
+ params: {
+ type: 2,
+ size: 1000,
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
+ className: 'yjc-box',
+ showPanel: false,
+ layerName: 'sg-yjc',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
+ <div>容量:${attrParams.capacity}(m³)</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
- {
- parentId: '3-1',
- id: '3-1-2',
- label: '企业',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 1,
- size: 1000,
- category: 2
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png',
- className: 'yjc-box',
- showPanel: false,
- layerName: 'yjc-qy',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
+
+ {
+ parentId: '3',
+ id: '3-3',
+ label: '切断阀',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ customWx: true,
+ params: {
+ type: 3,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
+ className: 'ysf-box',
+ showPanel: false,
+ layerName: 'qdf',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
<div>企业名称:${attrParams.firmName}</div>
<div>作用:${attrParams.mainFuncName}</div>
+ <div>容量:${attrParams.capacity}(m³)</div>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
- ]
- },
-
- {
- parentId: '3',
- id: '3-2',
- label: '阀门',
- children: [
- {
- parentId: '3-2',
- id: '3-2-1',
- label: '园区',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 2,
- size: 1000,
- category: 1
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
- className: 'ysf-box',
- showPanel: false,
- layerName: 'fm-yq',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
- <div>企业名称:${attrParams.firmName}</div>
- <div>作用:${attrParams.mainFuncName}</div>
- </div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
- ${iconEl}
- </div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
- {
- parentId: '3-2',
- id: '3-2-2',
- label: '企业',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 2,
- size: 1000,
- category: 2
+
+ {
+ id: '3-4',
+ label: '闸坝',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 4,
+ size: 1000
+ },
+ customWx: true,
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/zb.png',
+ className: 'sk-box',
+ showPanel: false,
+ layerName: 'zb'
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png',
- className: 'ysf-box',
- showPanel: false,
- layerName: 'fm-qy',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
- <div>企业名称:${attrParams.firmName}</div>
- <div>作用:${attrParams.mainFuncName}</div>
- </div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
- ${iconEl}
- </div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- }
- ]
- },
- {
- parentId: '3',
- id: '3-3',
- label: '公共管网',
- children: [
- // 给水管网、污水管网、燃气管网、雨水管网
- {
- parentId: '3-3',
- id: '3-3-2',
- label: '污水管网',
- type: 'layer',
- subType: 'geojsonPipe',
- layerName: 'wsgw',
- source: wsgw,
- color: DC.Color.DARKBLUE.withAlpha(0.9),
- height: 60.2,
- },
- {
- parentId: '3-3',
- id: '3-3-4',
- label: '雨水管网',
- type: 'layer',
- subType: 'geojsonPipe',
- layerName: 'ysgw',
- source: ysgw,
- color: DC.Color.CYAN.withAlpha(0.9),
- height: 60,
- },
- // {
- // id: '3-3-1',
- // label: '给水管网',
- // type: 'layer',
- // subType: 'geojsonPipe',
- // layerName: 'gsgw',
- // source: gsgw,
- // color: DC.Color.BLUE.withAlpha(0.9),
- // height: 60.4,
- // },
- // {
- // id: '3-3-3',
- // label: '燃气管网',
- // type: 'layer',
- // subType: 'geojsonPipe',
- // layerName: 'rqgw',
- // source: rqgw,
- // color: DC.Color.RED.withAlpha(0.9),
- // height: 60.6,
- // },
- ]
- },
-
- {
- parentId: '3',
- id: '3-4',
- label: '污水提升泵站',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- // className: 'sk-box',
- // showPanel: false,
- params: {
- type: 4,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/wstsb.png',
- className: 'yjc-box',
- showPanel: false,
- layerName: 'wstsbz',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.imageUrl) {
- return
- }
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
- <div>${attrParams.fullName}</div>
- <img src="${attrParams.imageUrl}" width="160" height="160" />
- </div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
- ${iconEl}
- </div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
-
- {
- parentId: '3',
- id: '3-5',
- label: '水库',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 5,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/sk.png',
- className: 'sk-box',
- showPanel: false,
- layerName: 'sk',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.imageUrl) {
- return
- }
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
- <div>${attrParams.firmName}</div>
- <img src="${attrParams.imageUrl}" width="160" height="160" />
- </div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
- ${iconEl}
- </div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
-
- {
- parentId: '3',
- id: '3-6',
- label: '应急泵',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 6,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjb.png',
- className: 'yjb-box',
- showPanel: false,
- layerName: 'yjb',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
- <div>企业名称:${attrParams.firmName}</div>
- <div>作用:${attrParams.mainFuncName}</div>
- </div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
- ${iconEl}
- </div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
-
- {
- parentId: '3',
- id: '3-8',
- label: '沟渠',
- type: 'layer',
- subType: 'geojsonPolygon',
- method: getGouQu,
- params: {
- type: 8,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/gouqu.png',
- className: 'xfs-box',
- showPanel: false,
- layerName: 'gouqu'
- },
- // {
- // id: '3-9',
- // label: '废水处理站',
- // type: 'layer',
- // subType: 'labelPoint',
- // method: getList,
- // params: {
- // type: 9,
- // size: 1000
- // // name: '吉水县绿源污水处理厂',
- // },
- // backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsclc.png',
- // className: 'xfs-box',
- // showPanel: false,
- // layerName: 'fsclz'
- // },
- {
- parentId: '3',
- id: '3-10',
- label: '排水口',
- type: 'layer',
- subType: 'labelPoint',
- method: getList,
- params: {
- type: 10,
- size: 1000
- },
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/psk.png',
- className: 'xfs-box',
- showPanel: false,
- layerName: 'psk',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- if (!attrParams.firmName) {
- return
- }
- addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
- window.$viewer.addLayer(addPopLayers[attrParams.id])
- let iconEl = `<div class="marsBlueGradientPnl">
- <div>企业名称:${attrParams.firmName}</div>
- <div>作用:${attrParams.mainFuncName}</div>
- </div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-two">
- ${iconEl}
- </div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.id].addOverlay(divIcon)
- }
- },
- // {
- // id: '3-11',
- // label: '污水池',
- // type: 'layer',
- // subType: 'labelPoint',
- // method: getList,
- // params: {
- // type: 11,
- // size: 1000
- // },
- // backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsc.png',
- // className: 'xfs-box',
- // showPanel: false,
- // layerName: 'wsc'
- // }
- ]
- },
-
- {
- id: '4',
- label: '风险源',
- children: [
- {
- parentId: '4',
- id: '4-1',
- label: '一般',
- type: 'layer',
- subType: 'labelPoint',
- method: getRiskList,
- params: {
- riskLevel: 1,
- size: 1000
- },
- showParams: 'category',
- className: 'fxy-ordinary',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-yb.png',
- showPanel: false,
- layerName: 'fxyOrdinary',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
- <li>企业名称:${attrParams.firmName || ''}</li>
- <li>风险等级:${attrParams.riskLevelName || ''}</li>
- <li>行业类别:${attrParams.name || ''}</li>
+ {
+ parentId: '3',
+ id: '3-5',
+ label: '湿地',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 5,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/sd.png',
+ className: 'xfs-box',
+ showPanel: false,
+ layerName: 'sd',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.id] = new DC.HtmlLayer(attrParams.id)
+ window.$viewer.addLayer(addPopLayers[attrParams.id])
+ let iconEl = `<div class="marsBlueGradientPnl">
+ <div>企业名称:${attrParams.firmName}</div>
+ <div>作用:${attrParams.mainFuncName}</div>
+ <div>容量:${attrParams.capacity}(m³)</div>
+ </div>`
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
+ ${iconEl}
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-three">
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.id].addOverlay(divIcon)
+ }
+ },
+
+ {
+ parentId: '3',
+ id: '3-6',
+ label: '坑塘',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 6,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/kt.png',
+ className: 'sk-box',
+ showPanel: false,
+ layerName: 'kt',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ if (!attrParams.firmName) {
+ return
+ }
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
+ <div>企业名称:${attrParams.firmName}</div>
+ <div>作用:${attrParams.mainFuncName}</div>
+ <div>容量:${attrParams.capacity}(m³)</div>
+ </div>`
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-two">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
- {
- parentId: '4',
- id: '4-2',
- label: '较大',
- type: 'layer',
- subType: 'labelPoint',
- method: getRiskList,
- params: {
- riskLevel: 2,
- size: 1000
- },
- showParams: 'category',
- className: 'fxy-larger',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-jd.png',
- showPanel: false,
- layerName: 'fxyLarger',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+
+ {
+ parentId: '3',
+ id: '3-8',
+ label: '桥梁',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getList,
+ params: {
+ type: 8,
+ size: 1000
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/ql.png',
+ className: 'xfs-box',
+ showPanel: false,
+ layerName: 'ql'
+ },
+
+ {
+ parentId: '3',
+ id: '3-9',
+ label: '雨水管网',
+ type: 'layer',
+ subType: 'geojsonPipe',
+ layerName: 'ysgw',
+ source: ysgw,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ height: 30,
+ },
+ {
+ parentId: '3',
+ id: '3-10',
+ label: '排洪渠',
+ type: 'layer',
+ subType: 'geojsonPolygon',
+ layerName: 'track',
+ source: track,
+ color: DC.Color.BLUE.withAlpha(0.9),
+ height: 30,
+ },
+ {
+ parentId: '3',
+ id: '3-11',
+ label: '企业级连接管网',
+ type: 'layer',
+ subType: 'geojsonPipe',
+ layerName: 'qyjgx',
+ source: qyjgx,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ height: 30,
+ },
+ ]
+ },
+
+ {
+ id: '4',
+ label: '风险源',
+ children: [
+ {
+ parentId: '4',
+ id: '4-1',
+ label: '一般',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 1,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-ordinary',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-yb.png',
+ showPanel: false,
+ layerName: 'fxyOrdinary',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
<li>企业名称:${attrParams.firmName || ''}</li>
+ <li>行业类别:${attrParams.category || ''}</li>
<li>风险等级:${attrParams.riskLevelName || ''}</li>
- <li>行业类别:${attrParams.name || ''}</li>
+ <li>风险物资:${attrParams.name || ''}</li>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-three">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
- }
- },
- {
- parentId: '4',
- id: '4-9',
- label: '暂定',
- type: 'layer',
- subType: 'labelPoint',
- method: getRiskList,
- params: {
- riskLevel: 9,
- size: 1000
- },
- showParams: 'category',
- className: 'fxy-zd',
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd.png',
- showPanel: false,
- layerName: 'fxyZdLarger',
- incident: (e) => {
- const { attrParams } = e.overlay
- // 删除
- destroyPop()
- addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
- window.$viewer.addLayer(addPopLayers[attrParams.name])
- let iconEl = `<div class="marsBlueGradientPnl">
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-2',
+ label: '较大',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 2,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-larger-b',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd-b.png',
+ showPanel: false,
+ layerName: 'fxyLarger',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
+ <li>企业名称:${attrParams.firmName || ''}</li>
+ <li>行业类别:${attrParams.category || ''}</li>
+ <li>风险等级:${attrParams.riskLevelName || ''}</li>
+ <li>风险物资:${attrParams.name || ''}</li>
+ </div>`
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
+ ${iconEl}
+ </div>`
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-3',
+ label: '重大',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 3,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-larger',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-jd.png',
+ showPanel: false,
+ layerName: 'fxyLargerB',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
+ <li>企业名称:${attrParams.firmName || ''}</li>
+ <li>行业类别:${attrParams.category || ''}</li>
+ <li>风险等级:${attrParams.riskLevelName || ''}</li>
+ <li>风险物资:${attrParams.name || ''}</li>
+ </div>`
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
+ ${iconEl}
+ </div>`
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-9',
+ label: '其他',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getRiskList,
+ params: {
+ riskLevel: 9,
+ size: 1000
+ },
+ showParams: 'firmName',
+ className: 'fxy-zd',
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd.png',
+ showPanel: false,
+ layerName: 'fxyZdLarger',
+ customWx: false,
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ // 删除
+ destroyPop()
+ addPopLayers[attrParams.name] = new DC.HtmlLayer(attrParams.name)
+ window.$viewer.addLayer(addPopLayers[attrParams.name])
+ let iconEl = `<div class="marsBlueGradientPnl">
<li>${attrParams.firmName || ''}</li>
<li>${attrParams.name || ''}</li>
<li>${attrParams.riskLevelName || ''}</li>
</div>`
- let divIcon = new DC.DivIcon(
- new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
- `<div class="public-map-popup-three">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(attrParams.lng, attrParams.lat, attrParams.ele || 64),
+ `<div class="public-map-popup-three">
${iconEl}
</div>`
- )
- let incident = () => {
- destroyPop()
- }
- divIcon.on(DC.MouseEventType.CLICK, incident)
- addPopLayers[attrParams.name].addOverlay(divIcon)
+ )
+ let incident = () => {
+ destroyPop()
+ }
+ divIcon.on(DC.MouseEventType.CLICK, incident)
+ addPopLayers[attrParams.name].addOverlay(divIcon)
+ }
+ },
+ {
+ parentId: '4',
+ id: '4-5',
+ label: '路线',
+ type: 'layer',
+ subType: 'geojsonLx',
+ layerName: 'lx',
+ source: lx,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ height: 30,
+ },
+ {
+ parentId: '4',
+ id: '4-6',
+ label: '岗亭',
+ type: 'layer',
+ subType: 'geojsonGt',
+ layerName: 'gt',
+ showPanel: false,
+ className: 'gt-zd',
+ source: gt,
+ color: DC.Color.CYAN.withAlpha(0.9),
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/gt.png',
+ height: 30,
+ },
+ ]
+ },
+
+ {
+ id: '5',
+ label: '园区范围',
+ type: 'layer',
+ subType: 'geojsonWall',
+ layerName: 'yqfw',
+ source: yqfw
+ },
+
+ {
+ id: '7',
+ label: '空中全景分布',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getPanoramaList,
+ params: {
+ size: 1000,
+ remark: '1'
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
+ showPanel: false,
+ layerName: 'kzqjdwfb',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ panoramaTitle.value = attrParams.name
+ if (
+ attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
+ ) {
+ attrParams.url = attrParams.url.replace(
+ "http://vr.jxpskj.com:180",
+ "/panorama"
+ )
+ }
+ panoramaUrl.value = attrParams.url
+ panoramaShow.value = true
}
- }
- ]
- },
-
- {
- id: '5',
- label: '园区范围',
- type: 'layer',
- subType: 'geojsonWall',
- layerName: 'yqfw',
- source: yqfw
- },
-
- {
- id: '7',
- label: '空中全景分布',
- type: 'layer',
- subType: 'labelPoint',
- method: getPanoramaList,
- params: {
- size: 1000,
- remark: '1'
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
- showPanel: false,
- layerName: 'kzqjdwfb',
- incident: (e) => {
- const { attrParams } = e.overlay
- panoramaTitle.value = attrParams.name
- if (
- attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
- ) {
- attrParams.url = attrParams.url.replace(
- "http://vr.jxpskj.com:180",
- "/panorama"
- )
- }
- panoramaUrl.value = attrParams.url
- panoramaShow.value = true
- }
- },
- {
- id: '8',
- label: '地面全景分布',
- type: 'layer',
- subType: 'labelPoint',
- method: getPanoramaList,
- params: {
- size: 1000,
- remark: '2'
+
+ {
+ id: '8',
+ label: '瑞昌影像',
+ type: 'layer',
+ subType: 'baseMap',
+ layerName: 'baseMap',
+ source: baseRcImages,
},
- backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
- showPanel: false,
- layerName: 'dtqjdwfb',
- incident: (e) => {
- const { attrParams } = e.overlay
- panoramaTitle.value = attrParams.name
- if (
- attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
- ) {
- attrParams.url = attrParams.url.replace(
- "http://vr.jxpskj.com:180",
- "/panorama"
- )
+
+ /* {
+ id: '8',
+ label: '地面全景分布',
+ type: 'layer',
+ subType: 'labelPoint',
+ method: getPanoramaList,
+ params: {
+ size: 1000,
+ remark: '2'
+ },
+ backgroundIcon: VITE_APP_BASE + 'img/mapicon/qj.png',
+ showPanel: false,
+ layerName: 'dtqjdwfb',
+ incident: (e) => {
+ const { attrParams } = e.overlay
+ panoramaTitle.value = attrParams.name
+ if (
+ attrParams.url.indexOf("http://vr.jxpskj.com:180") != -1
+ ) {
+ attrParams.url = attrParams.url.replace(
+ "http://vr.jxpskj.com:180",
+ "/panorama"
+ )
+ }
+ panoramaUrl.value = attrParams.url
+ panoramaShow.value = true
}
- panoramaUrl.value = attrParams.url
- panoramaShow.value = true
- }
- },
+ }, */
]
// let modellayer = new DC.VectorLayer("modellayer").addTo(window.$viewer)
@@ -811,342 +736,515 @@
// window.$viewer.flyToPosition("121.46748793889597,31.22345700031846,300,0,-90")
const defaultProps = {
- children: 'children',
- label: 'label',
+ children: 'children',
+ label: 'label',
}
+let curAddClassDoms = []
+
+watch(
+ () => mapStore.needSelectID,
+ (newValue, oldValue) => {
+ curAddClassDoms = []
+ }
+)
+
+
const checkType = (value) => {
- if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
- return 'obj'
- } else if (Array.isArray(value)) {
- return 'arr'
- }
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
+ return 'obj'
+ } else if (Array.isArray(value)) {
+ return 'arr'
+ }
}
// 用于存储收集到的节点的数组
const collectedNodes = reactive([])
// 递归函数,收集所有 flag 为 true 的子节点
const collectNodesWithFlag = (nodes) => {
- if (checkType(nodes) == 'obj') {
- if (nodes.type == 'layer') {
- collectedNodes.value.push(nodes)
- }
- if (nodes.children && nodes.children.length > 0) {
- collectNodesWithFlag(nodes.children)
- return
- }
- }
-
- if (checkType(nodes) == 'arr') {
- nodes.forEach(item => {
- if (item) {
- if (item.type == 'layer') {
- collectedNodes.value.push(item)
+ if (checkType(nodes) == 'obj') {
+ if (nodes.type == 'layer') {
+ collectedNodes.value.push(nodes)
}
-
- if (item.children && item.children.length > 0) {
- collectNodesWithFlag(item.children)
+ if (nodes.children && nodes.children.length > 0) {
+ collectNodesWithFlag(nodes.children)
+ return
}
- }
- })
- }
+ }
+
+ if (checkType(nodes) == 'arr') {
+ nodes.forEach(item => {
+ if (item) {
+ if (item.type == 'layer') {
+ collectedNodes.value.push(item)
+ }
+
+ if (item.children && item.children.length > 0) {
+ collectNodesWithFlag(item.children)
+ }
+ }
+ })
+ }
}
+
+let moveEntity = null
const handleCheckChange = (data) => {
- let options = treeRef.value?.getCheckedNodes()
- collectedNodes.value = []
- collectNodesWithFlag(data)
+ let options = treeRef.value?.getCheckedNodes()
+ collectedNodes.value = []
+ collectNodesWithFlag(data)
- collectedNodes.value.forEach(item => {
- if (options?.some(i => i.id == item.id)) {
+ collectedNodes.value.forEach(item => {
+ // console.log(item, 1111111111111111112)
+ if (options?.some(i => i.id == item.id)) {
- // const window.$Cesium = DC
- if (item.subType == '3Dtile') {
- if (!addTileLayers[item.layerName]) {
- // addTileLayers[item.layerName] = []
- // let tile = window.$viewer.delegate.scene.primitives.add(new window.$Cesium.Cesium3DTileset({
- // url: '/zhyq-rc/mx/tile_01/tileset.json',
- // }))
+ // const window.$Cesium = DC
+ if (item.subType == '3Dtile') {
+ if (!addTileLayers[item.layerName]) {
+ // addTileLayers[item.layerName] = []
+ // let tile = window.$viewer.delegate.scene.primitives.add(new window.$Cesium.Cesium3DTileset({
+ // url: '/zhyq-lc/mx/tile_01/tileset.json',
+ // }))
- // url: '/zhyq-rc/mx/tile_01/tileset.json',
- // }), 121323)
- // item.urlData.forEach(i => {
+ // url: '/zhyq-lc/mx/tile_01/tileset.json',
+ // }), 121323)
+ // item.urlData.forEach(i => {
- // })
- addTileLayers[item.layerName] = []
- item.urlData.forEach((m, ind) => {
- addTileLayers[item.layerName][ind] = new DC.Tileset(m.url, {
- // maximumMemoryUsage: 1024,
- // maximumScreenSpaceError: 8,
- // skipLevels: 5,
- // skipLevelOfDetail: true,
- // skipScreenSpaceErrorFactor: 128,
- // progressiveResolutionHeightFraction: 0.5,
- // baseScreenSpaceError: 1024
+ // })
+ addTileLayers[item.layerName] = []
+ item.urlData.forEach((m, ind) => {
+ addTileLayers[item.layerName][ind] = new DC.Tileset(m.url, {
+ // maximumMemoryUsage: 1024,
+ // maximumScreenSpaceError: 8,
+ // skipLevels: 5,
+ // skipLevelOfDetail: true,
+ // skipScreenSpaceErrorFactor: 128,
+ // progressiveResolutionHeightFraction: 0.5,
+ // baseScreenSpaceError: 1024
+ skipLevelOfDetail: true,
+ baseScreenSpaceError: 1024,
+ maximumScreenSpaceError: 16, // 数值加大,能让最终成像变模糊
+ skipScreenSpaceErrorFactor: 128,
+ skipLevels: 5,
+ immediatelyLoadDesiredLevelOfDetail: false,
+ loadSiblings: true, // 如果为true则不会在已加载完概况房屋后,自动从中心开始超清化房屋
+ cullWithChildrenBounds: true,
+ cullRequestsWhileMoving: true,
+ cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除
+ preloadWhenHidden: true,
+ preferLeaves: true,
+ maximumMemoryUsage: 1024, // 内存分配变小有利于倾斜摄影数据回收,提升性能体验
+ progressiveResolutionHeightFraction: 0.3, // 数值偏于0能够让初始加载变得模糊
+ dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快
+ dynamicScreenSpaceErrorFactor: 1, // 不知道起了什么作用没,反正放着吧先
+ dynamicScreenSpaceError: true, // 根据测试,有了这个后,会在真正的全屏加载完之后才清晰化房屋
+ })
+ // tile.setHeight(-420)
+ tileLayers.addOverlay(addTileLayers[item.layerName][ind])
+ })
+ } else {
+ addTileLayers[item.layerName].forEach(m => m.show = true)
+ }
+ } else if (item.subType == 'labelPoint') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.HtmlLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- skipLevelOfDetail: true,
- baseScreenSpaceError: 1024,
- maximumScreenSpaceError: 16, // 数值加大,能让最终成像变模糊
- skipScreenSpaceErrorFactor: 128,
- skipLevels: 5,
- immediatelyLoadDesiredLevelOfDetail: false,
- loadSiblings: true, // 如果为true则不会在已加载完概况房屋后,自动从中心开始超清化房屋
- cullWithChildrenBounds: true,
- cullRequestsWhileMoving: true,
- cullRequestsWhileMovingMultiplier: 10, // 值越小能够更快的剔除
- preloadWhenHidden: true,
- preferLeaves: true,
- maximumMemoryUsage: 64, // 内存分配变小有利于倾斜摄影数据回收,提升性能体验
- progressiveResolutionHeightFraction: 0.5, // 数值偏于0能够让初始加载变得模糊
- dynamicScreenSpaceErrorDensity: 0.5, // 数值加大,能让周边加载变快
- dynamicScreenSpaceErrorFactor: 1, // 不知道起了什么作用没,反正放着吧先
- dynamicScreenSpaceError: true, // 根据测试,有了这个后,会在真正的全屏加载完之后才清晰化房屋
- })
- // tile.setHeight(-420)
- tileLayers.addOverlay(addTileLayers[item.layerName][ind])
- })
- } else {
- addTileLayers[item.layerName].forEach(m => m.show = true)
- }
- } else if (item.subType == 'labelPoint') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.HtmlLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ item.method(item.params).then(res => {
+ let data = res.data.data.records
- item.method(item.params).then(res => {
- let data = res.data.data.records
+ data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
+ let iconEl = ''
- data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
- let iconEl = ''
+ let flag = mapStore.needSelectID.some(o => i.id === o)
- if ('showPanel' in item && item.showPanel == false) {
- if (item.backgroundIcon) {
- iconEl = `
+ flag && curAddClassDoms.push(i)
+
+ if ('showPanel' in item && item.showPanel == false) {
+ if (item.backgroundIcon) {
+ iconEl = `
<div class="map-name">${i[item.showParams] || i.name}</div>
<div class="map-icon">
<img src="${item.backgroundIcon}">
</div>
`
- }
- } else {
- iconEl = `<div class="marsBlueGradientPnl">
+ }
+ } else {
+ iconEl = `<div class="marsBlueGradientPnl">
<div>${i[item.showParams] || i.name}</div>
</div>`
- }
+ }
- let divIcon = new DC.DivIcon(
- new DC.Position(i.lng, i.lat, i.ele || 64),
- `<div class="public-map-popup ${item.className || ''}">
+ let divIcon = new DC.DivIcon(
+ new DC.Position(i.lng, i.lat, i.ele || 64),
+ `<div class="public-map-popup ${item.className || ''}">
${iconEl}
</div>`
- )
+ )
- divIcon.attrParams = i
+ divIcon.attrParams = i
- let incident = () => {
- }
+ let incident = () => {
+ }
- if (item.incident) incident = item.incident
+ if (item.incident) incident = item.incident
- divIcon.on(DC.MouseEventType.CLICK, incident)
+ divIcon.on(DC.MouseEventType.CLICK, (e) => {
+ if (mapStore.editPoint) {
+ moveEntity = e
+ return
+ }
- addTileLayers[item.layerName].addOverlay(divIcon)
- })
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- } else if (item.subType == 'geojsonWall') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ if (mapStore.startCustomWx && item.customWx) {
+ EventBus.emit('wxEntityClick', e)
+ return
+ }
- item.source.features.forEach(i => {
- let wall = new DC.Wall(
- i.geometry.coordinates[0].map(d => [...d, 125].join(',')).join(';')
- )
+ incident(e)
+ })
- wall.setStyle({
- material: new DC.WallTrailMaterialProperty({
- color: window.$Cesium.Color.fromBytes(0, 123, 255, 180),
- speed: 8
- })
- })
- addTileLayers[item.layerName].addOverlay(wall)
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- } else if (item.subType == 'geojsonPipe') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
+ addTileLayers[item.layerName].addOverlay(divIcon)
+ })
- function computeCircle (radius) {
- var positions = []
- for (var i = 0; i < 360; i++) {
- var radians = DC.Math.toRadians(i)
- positions.push({
- x: radius * Math.cos(radians),
- y: radius * Math.sin(radians),
- })
- }
- return positions
- }
+ if (curAddClassDoms.length == 1) {
+ window.$viewer.zoomToPosition(new DC.Position(curAddClassDoms[0].lng, curAddClassDoms[0].lat, 3000, 0, -90, 0))
+ }
- item.source.features.forEach(i => {
- let polylineVolume = new DC.PolylineVolume(
- i.geometry.coordinates.map(d => [d[0], d[1], item.height].join(',')).join(';'),
- computeCircle(1.6)
- )
+ if (curAddClassDoms.length > 1) {
+ let center = window.$turf.midpoint(...curAddClassDoms.map(i => window.$turf.point([i.lng, i.lat])))
+ window.$viewer.zoomToPosition(new DC.Position(center.geometry.coordinates[0], center.geometry.coordinates[1], 4200, 0, -90, 0))
+ }
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ } else if (item.subType == 'geojsonWall') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- if (i.properties.RefName.indexOf('拟建') != -1) {
- polylineVolume.setStyle({
- material: DC.Color.fromBytes(255, 0, 0, 230)
- })
+ item.source.features.forEach(i => {
+ let wall = new DC.Wall(
+ i.geometry.coordinates[0].map(d => [...d, 125].join(',')).join(';')
+ )
- let features = window.$turf.featureCollection(
- i.geometry.coordinates.map(d => window.$turf.point([d[0], d[1]]))
- )
+ wall.setStyle({
+ material: new DC.WallTrailMaterialProperty({
+ color: window.$Cesium.Color.fromBytes(0, 123, 255, 180),
+ speed: 8
+ })
+ })
+ addTileLayers[item.layerName].addOverlay(wall)
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ } else if (item.subType == 'geojsonPipe') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- let planCenter = window.$turf.center(features)
+ function computeCircle (radius) {
+ var positions = []
+ for (var i = 0; i < 360; i++) {
+ var radians = DC.Math.toRadians(i)
+ positions.push({
+ x: radius * Math.cos(radians),
+ y: radius * Math.sin(radians),
+ })
+ }
+ return positions
+ }
- let planDivIcon = new DC.DivIcon(
- new DC.Position(planCenter.geometry.coordinates[0], planCenter.geometry.coordinates[1], 60.5),
- `<div class="public-map-popup">
+ item.source.features.forEach(i => {
+ let polylineVolume = new DC.PolylineVolume(
+ i.geometry.coordinates.map(d => [d[0], d[1], item.height].join(',')).join(';'),
+ computeCircle(1.6)
+ )
+ if ('RefName' in i.properties && i.properties.RefName.indexOf('拟建') != -1) {
+ polylineVolume.setStyle({
+ material: DC.Color.fromBytes(255, 0, 0, 230)
+ })
+
+ let features = window.$turf.featureCollection(
+ i.geometry.coordinates.map(d => window.$turf.point([d[0], d[1]]))
+ )
+
+ let planCenter = window.$turf.center(features)
+
+ let planDivIcon = new DC.DivIcon(
+ new DC.Position(planCenter.geometry.coordinates[0], planCenter.geometry.coordinates[1], 60.5),
+ `<div class="public-map-popup">
<div class="map-name">拟建</div>
<div class="map-icon">
<img src="${VITE_APP_BASE + 'img/mapicon/nj-ys.png'}">
</div>
</div>`
- )
+ )
- planToBuild.addOverlay(planDivIcon)
- } else {
- polylineVolume.setStyle({
- material: item.color
- })
- }
-
- addTileLayers[item.layerName].addOverlay(polylineVolume)
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- } else if (item.subType == 'geojsonPolygon') {
- if (!addTileLayers[item.layerName]) {
- addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
- window.$viewer.addLayer(addTileLayers[item.layerName])
- item.method(item.params).then(res => {
- let data = res.data.data.records
- data.forEach(i => {
- let stl = ''
- try {
- let geom = JSON.parse(i.geom)
- if (geom && geom.coordinates && geom.coordinates[0]) {
- stl = geom.coordinates[0][0].map(d => d[0] + ',' + d[1]).join(';')
+ planToBuild.addOverlay(planDivIcon)
+ } else {
+ polylineVolume.setStyle({
+ material: item.color
+ })
+ }
+ // 雨水管网流向
+ if (item.layerName === 'ysgw') {
+ let ss = i.properties.qd + ',' + item.height + ';' + i.properties.zd + ',' + item.height
+ let polyline1 = new DC.Polyline(ss)
+ polyline1.setStyle({
+ width: 10,
+ arcType: 1,
+ material: new DC.PolylineImageTrailMaterialProperty({
+ color: DC.Color.GREEN,
+ speed: 20,
+ image: VITE_APP_BASE + 'img/mapicon/right.png',
+ repeat: { x: 30, y: 1 }
+ }),
+ clampToGround: false
+ })
+ addTileLayers[item.layerName].addOverlay(polyline1)
+ }
+ addTileLayers[item.layerName].addOverlay(polylineVolume)
+ })
} else {
- console.error('Invalid geom structure')
+ addTileLayers[item.layerName].show = true
}
- } catch (error) {
- console.error('Failed to parse geom:', error)
- }
- let polygon = new DC.Polygon(stl)
- polygon.setStyle({
- width: 2,
- material: DC.Color.BLUE,
- clampToGround: true
- })
- addTileLayers[item.layerName].addOverlay(polygon)
- })
- })
- } else {
- addTileLayers[item.layerName].show = true
- }
- }
- } else {
- if (addTileLayers[item.layerName]) {
- if (item.subType == '3Dtile') {
- addTileLayers[item.layerName].forEach(m => m.show = false)
- } else {
- addTileLayers[item.layerName].clear()
- window.$viewer && window.$viewer.removeLayer(addTileLayers[item.layerName])
- addTileLayers[item.layerName] = null
- delete addTileLayers[item.layerName]
+ } else if (item.subType == 'geojsonPolygon') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
- if (item.layerName == 'ysgw' && planToBuild) {
- planToBuild.clear()
- }
+ item.source.features.forEach(i => {
+ let Polyline = new DC.Polyline(i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';'))
+
+ Polyline.setStyle({
+ width: 3,
+ material: DC.Color.BLUE,
+ clampToGround: true
+ })
+ addTileLayers[item.layerName].addOverlay(Polyline)
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ // 路线
+ } else if (item.subType == 'geojsonLx') {
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
+
+ item.source.features.forEach(i => {
+ let ss = i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';')
+ let Polyline = new DC.Polyline(i.geometry.coordinates.map(d => [...d, item.height].join(',')).join(';'))
+
+ Polyline.setStyle({
+ width: 3,
+ // material: DC.Color.BLUE,
+ material: new DC.PolylineTrailMaterialProperty({
+ color: DC.Color.RED,
+ speed: 10
+ }),
+ clampToGround: true
+ })
+ addTileLayers[item.layerName].addOverlay(Polyline)
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ // 岗亭
+ } else if (item.subType == 'geojsonGt') {
+ // if (!addTileLayers[item.layerName]) {
+ // addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
+ // window.$viewer.addLayer(addTileLayers[item.layerName])
+
+ // item.source.features.forEach(i => {
+ // let iconEl = ''
+ // if ('showPanel' in item && item.showPanel == false) {
+ // if (item.backgroundIcon) {
+ // iconEl = `
+ // <div class="map-name">${i.properties.O_Name}</div>
+ // <div class="map-icon">
+ // <img src="${item.backgroundIcon}">
+ // </div>
+ // `
+ // }
+ // } else {
+ // iconEl = `<div class="marsBlueGradientPnl">
+ // <div>${i.properties.O_Name}</div>
+ // </div>`
+ // }
+ // console.log(i.geometry.coordinates[0], "2222222222222222222")
+ // console.log(i.properties.O_Name, "3333333333333333")
+
+ // let divIcon = new DC.DivIcon(
+ // new DC.Position('115.60241996718104', '29.818985725785911'),
+ // `<div class="public-map-popup ${item.className || ''}">
+ // ${iconEl}
+ // </div>`
+ // )
+
+ // addTileLayers[item.layerName].addOverlay(divIcon)
+ // })
+ // } else {
+ // addTileLayers[item.layerName].show = true
+ // }
+ if (!addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName] = new DC.HtmlLayer(item.layerName)
+ window.$viewer.addLayer(addTileLayers[item.layerName])
+
+ // item.method(item.params).then(res => {
+ // let data = res.data.data.records
+
+
+ item.source.features.forEach(i => {
+ let iconEl = ''
+
+ if ('showPanel' in item && item.showPanel == false) {
+ if (item.backgroundIcon) {
+ iconEl = `
+ <div class="map-name">${i.properties.O_Name}</div>
+ <div class="map-icon">
+ <img src="${item.backgroundIcon}">
+ </div>
+ `
+ }
+ } else {
+ iconEl = `<div class="marsBlueGradientPnl">
+ <div>${i.properties.O_Name}</div>
+ </div>`
+ }
+
+ let divIcon = new DC.DivIcon(
+ new DC.Position(i.geometry.coordinates[0], i.geometry.coordinates[1], i.ele || 64),
+ `<div class="public-map-popup ${item.className || ''}">
+ ${iconEl}
+ </div>`
+ )
+
+ divIcon.attrParams = i
+
+ // let incident = () => {
+ // }
+
+ // if (item.incident) incident = item.incident
+
+ // divIcon.on(DC.MouseEventType.CLICK, (e) => {
+ // if (mapStore.editPoint) {
+ // moveEntity = e
+ // return
+ // }
+
+ // if (mapStore.startCustomWx && item.customWx) {
+ // EventBus.emit('wxEntityClick', e)
+ // return
+ // }
+
+ // incident(e)
+ // })
+
+ addTileLayers[item.layerName].addOverlay(divIcon)
+ // })
+ })
+ } else {
+ addTileLayers[item.layerName].show = true
+ }
+ } else if (item.subType == 'baseMap') {
+ if (addTileLayers[item.layerName]) {
+ addTileLayers[item.layerName].show = true
+ return
+ }
+
+ addTileLayers[item.layerName] = window.$viewer?.imageryLayers.addImageryProvider(item.source)
+ }
+ } else {
+ if (addTileLayers[item.layerName]) {
+ if (item.subType == '3Dtile') {
+ addTileLayers[item.layerName].forEach(m => m.show = false)
+ } else if (item.subType == 'baseMap') {
+ addTileLayers[item.layerName].show = false
+ } else {
+ addTileLayers[item.layerName].clear()
+ window.$viewer && window.$viewer.removeLayer(addTileLayers[item.layerName])
+ addTileLayers[item.layerName] = null
+ delete addTileLayers[item.layerName]
+
+ if (item.layerName == 'ysgw' && planToBuild) {
+ planToBuild.clear()
+ }
+ if (item.layerName == 'qyjgx' && planToBuild) {
+ planToBuild.clear()
+ }
+ }
+ }
}
- }
- }
- })
+ })
}
function findObjectById (data, id) {
- // 遍历数据数组
- for (let i = 0; i < data.length; i++) {
- const item = data[i]
+ // 遍历数据数组
+ for (let i = 0; i < data.length; i++) {
+ const item = data[i]
- // 检查当前项的 id 是否匹配
- if (item.id === id) {
- return item // 找到匹配项,返回它
+ // 检查当前项的 id 是否匹配
+ if (item.id === id) {
+ return item // 找到匹配项,返回它
+ }
+
+ // 如果当前项有 children 数组,则递归查找
+ if (item.children && item.children.length > 0) {
+ const found = findObjectById(item.children, id)
+ if (found) {
+ return found // 在 children 中找到匹配项,返回它
+ }
+ }
}
- // 如果当前项有 children 数组,则递归查找
- if (item.children && item.children.length > 0) {
- const found = findObjectById(item.children, id)
- if (found) {
- return found // 在 children 中找到匹配项,返回它
- }
- }
- }
-
- // 如果没有找到匹配项,返回 null
- return null
+ // 如果没有找到匹配项,返回 null
+ return null
}
const restHandleCheckChange = (key) => {
- let checkIds = treeRef.value?.getCheckedKeys()
+ let checkIds = treeRef.value?.getCheckedKeys()
- if (checkIds && checkIds.some(i => i == key)) {
- return
- }
+ if (checkIds && checkIds.some(i => i == key)) {
+ return
+ }
- treeRef.value?.setCheckedKeys([...checkIds, key])
- handleCheckChange([findObjectById(data, key)])
+ treeRef.value?.setCheckedKeys([...checkIds, key])
+ handleCheckChange([findObjectById(data, key)])
}
const restHandleDelChange = (key) => {
- let checkIds = treeRef.value?.getCheckedKeys()
+ let checkIds = treeRef.value?.getCheckedKeys()
- if (checkIds && !checkIds.some(i => i == key)) {
- return
- }
+ if (checkIds && !checkIds.some(i => i == key)) {
+ return
+ }
- let selectData = findObjectById(data, key)
+ let selectData = findObjectById(data, key)
- let parentId = null
- if (selectData && 'parentId' in selectData) parentId = selectData.parentId
+ let parentId = null
+ if (selectData && 'parentId' in selectData) parentId = selectData.parentId
- treeRef.value?.setCheckedKeys(checkIds.filter(i => i.indexOf(key) && i != parentId))
- handleCheckChange([selectData])
+ treeRef.value?.setCheckedKeys(checkIds.filter(i => i.indexOf(key) && i != parentId))
+ handleCheckChange([selectData])
}
// 飞到园区范围
const flyToyqfw = () => {
- window.$viewer.zoomToPosition(new DC.Position(
- 115.1021,
- 27.2360,
- 5000,
- 0,
- -45,
- 0
- ), () => {
- })
+ window.$viewer.zoomToPosition(new DC.Position(
+ 115.6080,
+ 29.7880,
+ 3000,
+ 0,
+ -45,
+ 0
+ ), () => {
+ })
}
EventBus.on('restHandleCheckChange', restHandleCheckChange)
@@ -1154,8 +1252,66 @@
EventBus.on('flyToyqfw', flyToyqfw)
EventBus.on('destroyPop', destroyPop)
+let tooltip = window.$viewer.tooltip
+
+const viewerMouseMove = (e) => {
+ if (mapStore.editPoint) {
+ if (moveEntity != null) {
+
+ if (e.wgs84Position && e.wgs84Position.alt > 0) {
+ moveEntity.overlay.position = new DC.Position(e.wgs84Position.lng, e.wgs84Position.lat, e.wgs84Position.alt)
+ } else {
+ moveEntity.overlay.position = new DC.Position(e.wgs84SurfacePosition.lng, e.wgs84SurfacePosition.lat, e.wgs84SurfacePosition.alt)
+ }
+
+ tooltip.showAt({ x: e.windowPosition.x + 10, y: e.windowPosition.y }, '右键结束编辑')
+ } else {
+ tooltip.showAt({ x: e.windowPosition.x + 10, y: e.windowPosition.y }, '左键选中点位,开始编辑')
+ }
+ }
+}
+
+window.$viewer.on(DC.MouseEventType.MOUSE_MOVE, viewerMouseMove)
+
+const viewerRightClick = (e) => {
+ if (mapStore.editPoint && moveEntity != null) {
+ tooltip.enable = false
+ let lng, lat, ele
+
+ const { attrParams } = moveEntity.overlay
+ console.log(e, 2222)
+
+ if (e.wgs84Position && e.wgs84Position.alt > 0) {
+ lng = e.wgs84Position.lng
+ lat = e.wgs84Position.lat
+ ele = e.wgs84Position.alt
+ } else {
+ lng = e.wgs84SurfacePosition.lng
+ lat = e.wgs84SurfacePosition.lat
+ ele = e.wgs84SurfacePosition.alt
+ }
+
+ updateSpace({
+ id: attrParams.id,
+ lng,
+ lat,
+ ele: Math.ceil(ele)
+ }).then(res => {
+ moveEntity = null
+ mapStore.setEditPoint(false)
+
+ ElMessage({
+ message: '修改成功',
+ type: 'success',
+ })
+ })
+ }
+}
+
+window.$viewer.on(DC.MouseEventType.RIGHT_CLICK, viewerRightClick)
+
onMounted(() => {
- handleCheckChange(data.filter(i => indexPoint.value.includes(i.id)))
+ handleCheckChange(data.filter(i => indexPoint.value.includes(i.id)))
})
// const sharedData = computed(() => pointStore.sharedData);
@@ -1164,25 +1320,26 @@
// 关闭所有选中的,除了倾斜,园区分布,空中全景
const closeAll = () => {
- EventBus.emit('restHandleDelChange', `2`)
- EventBus.emit('restHandleDelChange', `3-1`)
- EventBus.emit('restHandleDelChange', `3-2`)
- // EventBus.emit('restHandleDelChange', `3-3-1`)
- EventBus.emit('restHandleDelChange', `3-3-2`)
- // EventBus.emit('restHandleDelChange', `3-3-3`)
- EventBus.emit('restHandleDelChange', `3-3-4`)
- EventBus.emit('restHandleDelChange', `3-4`)
- EventBus.emit('restHandleDelChange', `3-5`)
- EventBus.emit('restHandleDelChange', `3-6`)
- EventBus.emit('restHandleDelChange', `3-7`)
- EventBus.emit('restHandleDelChange', `3-8`)
- // EventBus.emit('restHandleDelChange', `3-9`)
- EventBus.emit('restHandleDelChange', `4-1`)
- EventBus.emit('restHandleDelChange', `4-2`)
- EventBus.emit('restHandleDelChange', `4-9`)
+ EventBus.emit('restHandleDelChange', `2`)
+ EventBus.emit('restHandleDelChange', `3-1`)
+ EventBus.emit('restHandleDelChange', `3-2`)
+ EventBus.emit('restHandleDelChange', `3-3`)
+ EventBus.emit('restHandleDelChange', `3-4`)
+ EventBus.emit('restHandleDelChange', `3-5`)
+ EventBus.emit('restHandleDelChange', `3-6`)
+ EventBus.emit('restHandleDelChange', `3-7`)
+ EventBus.emit('restHandleDelChange', `3-8`)
+ EventBus.emit('restHandleDelChange', `3-9`)
+ EventBus.emit('restHandleDelChange', `3-11`)
- EventBus.emit('restHandleDelChange', `8`)
- destroyPop()
+ EventBus.emit('restHandleDelChange', `4-1`)
+ EventBus.emit('restHandleDelChange', `4-2`)
+ EventBus.emit('restHandleDelChange', `4-3`)
+ EventBus.emit('restHandleDelChange', `4-9`)
+ EventBus.emit('restHandleDelChange', `4-5`)
+ EventBus.emit('restHandleDelChange', `4-6`)
+
+ destroyPop()
}
// const sharedData = computed(() => pointStore.sharedData);
@@ -1190,90 +1347,95 @@
// });
// 监听当前路由路径的变化
watch(() => router.currentRoute.value.path,
- (newPath, oldPath) => {
- console.log(`Current path changed from ${oldPath} to ${newPath}`)
- closeAll()
- },
- { immediate: true }
+ (newPath, oldPath) => {
+ console.log(`Current path changed from ${oldPath} to ${newPath}`)
+ closeAll()
+ },
+ { immediate: true }
)
// 销毁
function destroyPop () {
- if (addPopLayers && addPopLayers != null) {
- let arr = Object.keys(addPopLayers)
- if (arr.length > 0) {
- arr.forEach(i => {
- addPopLayers[i] && window.$viewer && window.$viewer.removeLayer(addPopLayers[i])
- addPopLayers[i] = null
- delete addPopLayers[i]
- })
- addPopLayers = {}
+ if (addPopLayers && addPopLayers != null) {
+ let arr = Object.keys(addPopLayers)
+ if (arr.length > 0) {
+ arr.forEach(i => {
+ addPopLayers[i] && window.$viewer && window.$viewer.removeLayer(addPopLayers[i])
+ addPopLayers[i] = null
+ delete addPopLayers[i]
+ })
+ addPopLayers = {}
+ }
}
- }
}
onUnmounted(() => {
- let arr = Object.keys(addTileLayers)
- arr.forEach(i => {
- if (i == 'hgyq') {
- addTileLayers[i].forEach(t => {
- tileLayers.removeOverlay(t)
- t = null
- })
- } else {
- addTileLayers[i] && window.$viewer && window.$viewer.removeLayer(addTileLayers[i])
+ let arr = Object.keys(addTileLayers)
+ arr.forEach(i => {
+ if (i == 'hgyq' || i == 'hgyqT') {
+ addTileLayers[i].forEach(t => {
+ tileLayers.removeOverlay(t)
+ t = null
+ })
+ } else if (i == 'baseMap') {
+ window.$viewer?.imageryLayers.remove(addTileLayers[i])
+ } else {
+ addTileLayers[i] && window.$viewer && window.$viewer.removeLayer(addTileLayers[i])
+ }
+ addTileLayers[i] = null
+ delete addTileLayers[i]
+ })
+ addTileLayers = null
+
+ if (tileLayers) {
+ tileLayers.remove()
+ window.$viewer && window.$viewer.removeLayer(tileLayers)
+ tileLayers = null
}
- addTileLayers[i] = null
- delete addTileLayers[i]
- })
- addTileLayers = null
- if (tileLayers) {
- tileLayers.remove()
- window.$viewer && window.$viewer.removeLayer(tileLayers)
- tileLayers = null
- }
+ if (planToBuild) {
+ planToBuild.remove()
+ window.$viewer && window.$viewer.removeLayer(planToBuild)
+ planToBuild = null
+ }
- if (planToBuild) {
- planToBuild.remove()
- window.$viewer && window.$viewer.removeLayer(planToBuild)
- planToBuild = null
- }
+ // 弹窗销毁
+ destroyPop()
+ addPopLayers = null
- // 弹窗销毁
- destroyPop()
- addPopLayers = null
+ window.$viewer && window.$viewer.off(DC.MouseEventType.MOUSE_MOVE, viewerMouseMove)
+ window.$viewer && window.$viewer.off(DC.MouseEventType.RIGHT_CLICK, viewerRightClick)
- EventBus.off('restHandleCheckChange', restHandleCheckChange)
- EventBus.off('restHandleDelChange', restHandleDelChange)
- EventBus.off('flyToyqfw', flyToyqfw)
+ EventBus.off('restHandleCheckChange', restHandleCheckChange)
+ EventBus.off('restHandleDelChange', restHandleDelChange)
+ EventBus.off('flyToyqfw', flyToyqfw)
})
</script>
<style lang="scss" scoped>
.tree-content {
- min-width: 200px;
- padding: 10px;
+ min-width: 200px;
+ padding: 10px;
- ::v-deep(.el-tree) {
- color: #fff;
- background: transparent;
+ ::v-deep(.el-tree) {
+ color: #fff;
+ background: transparent;
- /* 鼠标浮动过的背景颜色 */
- .el-tree-node__content:hover {
- background: #0074b7;
+ /* 鼠标浮动过的背景颜色 */
+ .el-tree-node__content:hover {
+ background: #0074b7;
+ }
+
+ /* 鼠标点击时节点的背景颜色 */
+ .el-tree-node:focus>.el-tree-node__content {
+ background-color: #0074b7 !important;
+ color: rgb(255, 255, 255);
+ }
+
+ /* 鼠标失去焦点时节点背景的颜色 */
+ .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
+ background: rgb(0, 129, 204);
+ }
}
-
- /* 鼠标点击时节点的背景颜色 */
- .el-tree-node:focus>.el-tree-node__content {
- background-color: #0074b7 !important;
- color: rgb(255, 255, 255);
- }
-
- /* 鼠标失去焦点时节点背景的颜色 */
- .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
- background: rgb(0, 129, 204);
- }
- }
}
</style>
--
Gitblit v1.9.3