From e14358f85a7d32a753225f253ff223d17cf36c25 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 02 Apr 2025 19:10:00 +0800
Subject: [PATCH] style: 风格处理

---
 src/views/Home/useUavHome/useUavHome.js |  748 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 387 insertions(+), 361 deletions(-)

diff --git a/src/views/Home/useUavHome/useUavHome.js b/src/views/Home/useUavHome/useUavHome.js
index 655b589..555a7d3 100644
--- a/src/views/Home/useUavHome/useUavHome.js
+++ b/src/views/Home/useUavHome/useUavHome.js
@@ -1,386 +1,412 @@
-import * as Cesium from 'cesium';
-import aggregationImg from '@/assets/images/home/useUavHome/aggregation.png';
-import uavImg from '@/assets/images/home/useUavHome/uavImg.png';
-import MapPopUpBox from '@/views/Home/useUavHome/MapPopUpBox.vue';
-import { render } from 'vue';
-import { useStore } from 'vuex';
-import { getCenterPoint } from '@/utils/cesium/mapUtil';
-import cesiumOperation from '@/utils/cesium-tsa';
-import { HeadingPitchRange } from 'cesium';
-import { getDeviceRegion, getDeviceRegionCount } from '@/api/home/aggregation';
-
+import * as Cesium from 'cesium'
+import aggregationImg from '@/assets/images/home/useUavHome/aggregation.png'
+import uavImg from '@/assets/images/home/useUavHome/uavImg.png'
+import MapPopUpBox from '@/views/Home/useUavHome/MapPopUpBox.vue'
+import { render } from 'vue'
+import { useStore } from 'vuex'
+import { getCenterPoint } from '@/utils/cesium/mapUtil'
+import cesiumOperation from '@/utils/cesium-tsa'
+import { HeadingPitchRange } from 'cesium'
+import { getDeviceRegion, getDeviceRegionCount } from '@/api/home/aggregation'
 
 /**
  * 机巢聚合功能
  */
 export const useUavHome = () => {
-  const { flyTo } = cesiumOperation();
+	const { flyTo } = cesiumOperation()
 
-  let scalingJudgment = [
-    { name: '县', splashedList: [], gJson: null, show: false,outline:{}, value: [0, 48651], height: 31753 },
-    { name: '市', splashedList: [], gJson: null, show: false,outline:{}, value: [48651, 314863], height: 257731 },
-    { name: '省', splashedList: [], gJson: null, show: false,outline:{}, value: [314863, 3796280000], height: 1987280 },
-  ];
-  let viewer = null;
-  let active = null;
-  let handler = null;
-  let positionC3 = null;
-  let currentEntity = null;
-  const listenerHeight = () => {
-    determineScaling();
-    viewer.camera.moveEnd.addEventListener(determineScaling);
-  };
+	let scalingJudgment = [
+		{
+			name: '县',
+			splashedList: [],
+			gJson: null,
+			show: false,
+			outline: {},
+			value: [0, 48651],
+			height: 31753,
+		},
+		{
+			name: '市',
+			splashedList: [],
+			gJson: null,
+			show: false,
+			outline: {},
+			value: [48651, 314863],
+			height: 257731,
+		},
+		{
+			name: '省',
+			splashedList: [],
+			gJson: null,
+			show: false,
+			outline: {},
+			value: [314863, 3796280000],
+			height: 1987280,
+		},
+	]
+	let viewer = null
+	let active = null
+	let handler = null
+	let positionC3 = null
+	let currentEntity = null
+	const listenerHeight = () => {
+		determineScaling()
+		viewer.camera.moveEnd.addEventListener(determineScaling)
+	}
 
-  // 确定缩放比例
-  const determineScaling = index => {
-    console.log('确定缩放比例');
-    if (!viewer) return;
-    let height = viewer.camera.positionCartographic.height;
-    // 根据高度展示对应的 gJson
-    for (let [index, item] of scalingJudgment.entries()) {
-      if (!item.show) return;
-      if (height > item.value[0] && height <= item.value[1]) {
-        if (active === item.name) return;
-        active = item.name;
-        removeEntities();
-        removeLabel();
-        item.gJson ?  aggregation(item) :  splashed(item)
-        renderOutline(item)
-        break;
-      }
-    }
-  };
+	// 确定缩放比例
+	const determineScaling = index => {
+		console.log('确定缩放比例')
+		if (!viewer) return
+		let height = viewer.camera.positionCartographic.height
+		// 根据高度展示对应的 gJson
+		for (let [index, item] of scalingJudgment.entries()) {
+			if (!item.show) return
+			if (height > item.value[0] && height <= item.value[1]) {
+				if (active === item.name) return
+				active = item.name
+				removeEntities()
+				removeLabel()
+				item.gJson ? aggregation(item) : splashed(item)
+				renderOutline(item)
+				break
+			}
+		}
+	}
 
-  function convertToHierarchy(code) {
-    const codeStr = code.toString();
-    const provinceCode = codeStr.slice(0, 2) + '0000';
-    const cityCode = codeStr.slice(0, 4) + '00';
-    if (codeStr.slice(2, 4) === '00' && codeStr.slice(4, 6) === '00') {
-      return [provinceCode];
-    } else if (codeStr.slice(4, 6) === '00') {
-      return [provinceCode, cityCode];
-    }
-    return [provinceCode, cityCode, code];
-  }
+	function convertToHierarchy(code) {
+		const codeStr = code.toString()
+		const provinceCode = codeStr.slice(0, 2) + '0000'
+		const cityCode = codeStr.slice(0, 4) + '00'
+		if (codeStr.slice(2, 4) === '00' && codeStr.slice(4, 6) === '00') {
+			return [provinceCode]
+		} else if (codeStr.slice(4, 6) === '00') {
+			return [provinceCode, cityCode]
+		}
+		return [provinceCode, cityCode, code]
+	}
 
-  const store = useStore();
-  const selectedAreaCode = computed(() => store.state.user.selectedAreaCode);
+	const store = useStore()
+	const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
 
-  function getDeviceCount(areaCode) {
-    return getDeviceRegionCount({areaCode}).then(res => {
-      return res?.data?.data || [];
-    });
-  }
+	function getDeviceCount(areaCode) {
+		return getDeviceRegionCount({ areaCode }).then(res => {
+			return res?.data?.data || []
+		})
+	}
 
-  function getDeviceList(areaCode) {
-    return getDeviceRegion({areaCode}).then(res => {
-      return res?.data?.data || [];
-    });
-  }
-  const findFun = (featItem, numItem) => Number(featItem.region_code.slice(0, 6)) === numItem.properties.adcode;
-  const { VITE_APP_BASE } = import.meta.env;
-  const defaultDir = `${VITE_APP_BASE}public/geoJson/100000/`;
+	function getDeviceList(areaCode) {
+		return getDeviceRegion({ areaCode }).then(res => {
+			return res?.data?.data || []
+		})
+	}
+	const findFun = (featItem, numItem) =>
+		Number(featItem.region_code.slice(0, 6)) === numItem.properties.adcode
+	const { VITE_APP_BASE } = import.meta.env
+	const defaultDir = `${VITE_APP_BASE}public/geoJson/100000/`
 
-  const getFiler = async (url) => {
-    const gJson = await import(/* @vite-ignore */ url);
-    return JSON.parse(JSON.stringify(gJson));
-  }
-  const getOutLine = async (jsonPathPre,hierarchy) => {
-    const parentGJson = await getFiler(`${defaultDir}${jsonPathPre}/index.json`)
-    let features = parentGJson.features.find(
-      item => item.properties.adcode === Number(hierarchy[hierarchy.length - 1])
-    );
-    return  { type: "FeatureCollection", features: [features] }
-  }
+	const getFiler = async url => {
+		const gJson = await import(/* @vite-ignore */ url)
+		return JSON.parse(JSON.stringify(gJson))
+	}
+	const getOutLine = async (jsonPathPre, hierarchy) => {
+		const parentGJson = await getFiler(`${defaultDir}${jsonPathPre}/index.json`)
+		let features = parentGJson.features.find(
+			item => item.properties.adcode === Number(hierarchy[hierarchy.length - 1])
+		)
+		return { type: 'FeatureCollection', features: [features] }
+	}
 
-  const injectData = (gJson,dataList) => {
-    return {
-      ...gJson,
-      features: gJson.features.map(item => ({ ...item, data: dataList.find(item1 => findFun(item1, item)) })),
-    }
-  }
+	const injectData = (gJson, dataList) => {
+		return {
+			...gJson,
+			features: gJson.features.map(item => ({
+				...item,
+				data: dataList.find(item1 => findFun(item1, item)),
+			})),
+		}
+	}
 
+	watch(
+		selectedAreaCode,
+		async (newValue, oldValue) => {
+			if (newValue) {
+				const list = await getDeviceCount(newValue)
+				const splashedList = await getDeviceList(newValue)
+				console.log(list)
+				console.log(splashedList)
+				const hierarchy = convertToHierarchy(newValue.slice(0, 6))
+				const jsonPath = hierarchy.join('/')
+				const jsonPathPre = hierarchy.slice(0, hierarchy.length - 1).join('/')
+				scalingJudgment = scalingJudgment.map(item => ({ ...item, show: true }))
+				scalingJudgment[0].gJson = null
+				scalingJudgment[0].splashedList = splashedList
+				active = null
+				// 省
+				if (hierarchy.length === 1) {
+					const gJson1 = await getFiler(`${defaultDir}${jsonPath}/indexDistrict.json`)
+					const gJson2 = await getFiler(`${defaultDir}${jsonPath}/index.json`)
+					scalingJudgment[1].gJson = {
+						...gJson1,
+						features: gJson1.features.map(item => ({
+							...item,
+							data: list.flatMap(item => item.childrens || []).find(item1 => findFun(item1, item)),
+						})),
+					}
+					scalingJudgment[2].gJson = injectData(gJson2, list)
+					const { lng, lat } = getCenterPoint(gJson2.features.map(item => item.properties.center))
+					flyTo({ longitude: lng, latitude: lat }, 0, scalingJudgment[2].height)
+				}
+				// 市
+				if (hierarchy.length === 2) {
+					scalingJudgment[2].gJson = null
+					scalingJudgment[2].show = false
+					const gJson1 = await getFiler(`${defaultDir}${jsonPath}/index.json`)
+					scalingJudgment[1].gJson = injectData(gJson1, list)
+					const center = getCenterPoint(gJson1.features.map(item => item.properties.center))
+					flyTo({ longitude: center.lng, latitude: center.lat }, 0, scalingJudgment[1].height)
+				}
+				// 区县
+				if (hierarchy.length === 3) {
+					scalingJudgment[1].gJson = null
+					scalingJudgment[1].show = false
+					scalingJudgment[2].gJson = null
+					scalingJudgment[2].show = false
+					const outlineGJson = await getOutLine(jsonPathPre, hierarchy)
+					const center = outlineGJson.features[0].properties.center
+					flyTo({ longitude: center[0], latitude: center[1] }, 0, scalingJudgment[0].height)
+				}
+				// 轮廓
+				const outlineGJson = await getOutLine(jsonPathPre, hierarchy)
+				scalingJudgment.forEach(item => item.show && (item.outline = outlineGJson))
+			}
+		},
+		{ immediate: true, deep: true }
+	)
 
+	//散点机巢
+	function splashed(row) {
+		row.splashedList.forEach(item => {
+			viewer.entities.add({
+				position: Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude),
+				label: {
+					// 随机整数
+					text: item.nickname,
+					font: '12pt Source Han Sans CN',
+					fillColor: Cesium.Color.WHITE,
+					outlineColor: Cesium.Color.BLACK,
+					outlineWidth: 2,
+					style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+					verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+					pixelOffset: new Cesium.Cartesian2(0, -9),
+				},
+				billboard: {
+					image: new Cesium.ConstantProperty(uavImg),
+					width: 24,
+					height: 24,
+				},
+				properties: {
+					customData: {
+						data: item,
+					},
+				},
+			})
+		})
+	}
 
-  watch(
-    selectedAreaCode,
-    async (newValue, oldValue) => {
-      if (newValue) {
-        const list = await getDeviceCount(newValue);
-        const splashedList = await getDeviceList(newValue);
-        console.log(list);
-        console.log(splashedList);
-        const hierarchy = convertToHierarchy(newValue.slice(0, 6));
-        const jsonPath = hierarchy.join('/');
-        const jsonPathPre = hierarchy.slice(0, hierarchy.length - 1).join('/');
-        scalingJudgment = scalingJudgment.map(item => ({ ...item, show: true }));
-        scalingJudgment[0].gJson = null;
-        scalingJudgment[0].splashedList = splashedList;
-        active = null
-        // 省
-        if (hierarchy.length === 1) {
-          const gJson1 = await getFiler(`${defaultDir}${jsonPath}/indexDistrict.json`)
-          const gJson2 = await getFiler(`${defaultDir}${jsonPath}/index.json`)
-          scalingJudgment[1].gJson = {
-            ...gJson1,
-            features: gJson1.features.map(item => ({
-              ...item,
-              data: list.flatMap(item => item.childrens || []).find(item1 => findFun(item1, item)),
-            })),
-          };
-          scalingJudgment[2].gJson = injectData(gJson2,list);
-          const { lng, lat } = getCenterPoint(gJson2.features.map(item => item.properties.center));
-          flyTo({ longitude: lng, latitude: lat }, 0, scalingJudgment[2].height);
-        }
-        // 市
-        if (hierarchy.length === 2) {
-          scalingJudgment[2].gJson = null;
-          scalingJudgment[2].show = false;
-          const gJson1 = await getFiler(`${defaultDir}${jsonPath}/index.json`)
-          scalingJudgment[1].gJson = injectData(gJson1,list);
-          const center = getCenterPoint(gJson1.features.map(item => item.properties.center));
-          flyTo({ longitude: center.lng, latitude: center.lat }, 0, scalingJudgment[1].height);
-        }
-        // 区县
-        if (hierarchy.length === 3) {
-          scalingJudgment[1].gJson = null;
-          scalingJudgment[1].show = false;
-          scalingJudgment[2].gJson = null;
-          scalingJudgment[2].show = false;
-          const outlineGJson = await getOutLine(jsonPathPre,hierarchy)
-          const center = outlineGJson.features[0].properties.center;
-          flyTo({ longitude: center[0], latitude: center[1] }, 0, scalingJudgment[0].height);
-        }
-        // 轮廓
-        const outlineGJson = await getOutLine(jsonPathPre,hierarchy)
-        scalingJudgment.forEach(item => item.show &&(item.outline = outlineGJson))
-      }
-    },
-    { immediate: true, deep: true }
-  );
+	// 渲染轮廓
+	const renderOutline = item => {
+		item.outline &&
+			Cesium.GeoJsonDataSource.load(item.outline).then(dataSource => {
+				viewer.dataSources.add(dataSource)
+				const entities = dataSource.entities.values
+				entities.forEach(entity => {
+					// 隐藏多边形填充
+					entity.polygon.material = Cesium.Color.TRANSPARENT
+					entity.polygon.outline = false // 关闭原生轮廓
+					// 创建独立折线作为轮廓
+					const positions = entity.polygon.hierarchy.getValue().positions
+					viewer.entities.add({
+						polyline: {
+							positions: positions,
+							width: 5, // 直接设置宽度
+							material: new Cesium.PolylineGlowMaterialProperty({
+								glowPower: 0.5,
+								color: Cesium.Color.AQUA,
+							}),
+							clampToGround: true, // 贴地显示
+						},
+					})
+				})
+			})
+	}
 
-  //散点机巢
-  function splashed(row) {
-    row.splashedList.forEach(item => {
-      viewer.entities.add({
-        position: Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude),
-        label: {
-          // 随机整数
-          text: item.nickname,
-          font: '12pt Source Han Sans CN',
-          fillColor: Cesium.Color.WHITE,
-          outlineColor: Cesium.Color.BLACK,
-          outlineWidth: 2,
-          style: Cesium.LabelStyle.FILL_AND_OUTLINE,
-          verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
-          pixelOffset: new Cesium.Cartesian2(0, -9),
-        },
-        billboard: {
-          image: new Cesium.ConstantProperty(uavImg),
-          width: 24,
-          height: 24,
-        },
-        properties: {
-          customData: {
-            data: item,
-          },
-        },
-      });
-    });
-  }
+	// 聚合机巢
+	const aggregation = (item, flyTo) => {
+		if (!item.gJson) return
+		const featuresList = item.gJson.features.map(item => ({
+			name: item.properties.name,
+			position: item.properties.center,
+			data: item.data,
+			id: item.region_code,
+		}))
+		// 遍历特征并添加实体
+		featuresList.forEach(feature => {
+			if (!feature.position) return
+			const position = Cesium.Cartesian3.fromDegrees(feature.position[0], feature.position[1])
+			viewer.entities.add({
+				position: position,
+				label: {
+					text: feature.name,
+					font: '14pt Source Han Sans CN',
+					fillColor: Cesium.Color.WHITE,
+					outlineColor: Cesium.Color.BLACK,
+					outlineWidth: 2,
+					style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+					verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+					pixelOffset: new Cesium.Cartesian2(0, -9),
+				},
+			})
+			viewer.entities.add({
+				id: feature.id,
+				position: position,
+				label: {
+					text: feature.data.total_device_count,
+					font: '12pt Source Han Sans CN',
+					fillColor: Cesium.Color.BLACK,
+					style: Cesium.LabelStyle.FILL_AND_OUTLINE,
+					eyeOffset: new Cesium.Cartesian3(0, 0, -10), // 让label "浮" 在广告牌前面
+				},
+				billboard: {
+					image: new Cesium.ConstantProperty(aggregationImg),
+					width: 35,
+					height: 35,
+				},
+				properties: {
+					id: feature.id,
+					customData: {
+						data: feature.data,
+					},
+				},
+			})
+		})
 
-  // 渲染轮廓
-  const renderOutline = (item) => {
-    item.outline && Cesium.GeoJsonDataSource.load(item.outline).then(dataSource => {
-      viewer.dataSources.add(dataSource);
-      const entities = dataSource.entities.values;
-      entities.forEach(entity => {
-        // 隐藏多边形填充
-        entity.polygon.material = Cesium.Color.TRANSPARENT;
-        entity.polygon.outline = false; // 关闭原生轮廓
-        // 创建独立折线作为轮廓
-        const positions = entity.polygon.hierarchy.getValue().positions;
-        viewer.entities.add({
-          polyline: {
-            positions: positions,
-            width: 5, // 直接设置宽度
-            material: new Cesium.PolylineGlowMaterialProperty({
-              glowPower: 0.5,
-              color: Cesium.Color.AQUA
-            }),
-            clampToGround: true // 贴地显示
-          }
-        });
-      });
-    });
-  };
+		// 加载新的 GeoJSON 数据
+		Cesium.GeoJsonDataSource.load(item.gJson).then(dataSource => {
+			viewer.dataSources.add(dataSource)
+			item.dataSource = dataSource // 保存数据源以便后续删除
+			// 获取数据源中的实体
+			const entities = dataSource.entities.values
+			entities.forEach(entity => {
+				entity.polygon.material = new Cesium.ColorMaterialProperty(
+					Cesium.Color.YELLOW.withAlpha(0) // 透明填充
+				)
+				entity.polygon.outline = new Cesium.ConstantProperty(true) // 显示边框
+				entity.polygon.outlineColor = new Cesium.ConstantProperty(Cesium.Color.AQUAMARINE)
+			})
+			flyTo &&
+				viewer.flyTo(dataSource, {
+					offset: new Cesium.HeadingPitchRange(
+						0, // heading: 0 (朝向不变)
+						Cesium.Math.toRadians(-90), // pitch: -90° (垂直向下)
+						0 // range: 0 (默认距离)
+					),
+					duration: 0.5,
+				})
+		})
+	}
 
-  // 聚合机巢
-  const aggregation = (item, flyTo) => {
-    if (!item.gJson) return;
-    const featuresList = item.gJson.features.map(item => ({
-      name: item.properties.name,
-      position: item.properties.center,
-      data: item.data,
-      id: item.region_code,
-    }));
-    // 遍历特征并添加实体
-    featuresList.forEach(feature => {
-      if (!feature.position) return;
-      const position = Cesium.Cartesian3.fromDegrees(feature.position[0], feature.position[1]);
-      viewer.entities.add({
-        position: position,
-        label: {
-          text: feature.name,
-          font: '14pt Source Han Sans CN',
-          fillColor: Cesium.Color.WHITE,
-          outlineColor: Cesium.Color.BLACK,
-          outlineWidth: 2,
-          style: Cesium.LabelStyle.FILL_AND_OUTLINE,
-          verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
-          pixelOffset: new Cesium.Cartesian2(0, -9),
-        }
-      });
-      viewer.entities.add({
-        id: feature.id,
-        position: position,
-        label: {
-          text: feature.data.total_device_count,
-          font: '12pt Source Han Sans CN',
-          fillColor: Cesium.Color.BLACK,
-          style: Cesium.LabelStyle.FILL_AND_OUTLINE,
-          eyeOffset: new Cesium.Cartesian3(0, 0, -10), // 让label "浮" 在广告牌前面
-        },
-        billboard: {
-          image: new Cesium.ConstantProperty(aggregationImg),
-          width: 35,
-          height: 35,
-        },
-        properties: {
-          id: feature.id,
-          customData: {
-            data: feature.data,
-          },
-        },
-      });
-    });
+	// 获取弹框box
+	const getLabelDom = data => {
+		const vNode = h(MapPopUpBox, { data, removeLabel })
+		const tooltipContainer = document.createElement('div')
+		tooltipContainer.id = 'mapPopUpBox'
+		tooltipContainer.style.position = 'absolute'
+		tooltipContainer.style.transform = 'translateY(-50%)'
+		tooltipContainer.style.pointerEvents = 'none'
+		document.querySelector('.page-index').append(tooltipContainer)
+		render(vNode, tooltipContainer)
+		return tooltipContainer
+	}
 
-    // 加载新的 GeoJSON 数据
-    Cesium.GeoJsonDataSource.load(item.gJson).then(dataSource => {
-      viewer.dataSources.add(dataSource);
-      item.dataSource = dataSource; // 保存数据源以便后续删除
-      // 获取数据源中的实体
-      const entities = dataSource.entities.values;
-      entities.forEach(entity => {
-        entity.polygon.material = new Cesium.ColorMaterialProperty(
-          Cesium.Color.YELLOW.withAlpha(0) // 透明填充
-        );
-        entity.polygon.outline = new Cesium.ConstantProperty(true); // 显示边框
-        entity.polygon.outlineColor = new Cesium.ConstantProperty(Cesium.Color.AQUAMARINE );
-      });
-      flyTo &&
-        viewer.flyTo(dataSource, {
-          offset: new Cesium.HeadingPitchRange(
-            0, // heading: 0 (朝向不变)
-            Cesium.Math.toRadians(-90), // pitch: -90° (垂直向下)
-            0 // range: 0 (默认距离)
-          ),
-          duration: 0.5,
-        });
-    });
-  };
+	// 弹框位置刷新
+	const labelBoxRender = () => {
+		let dom = document.querySelector('#mapPopUpBox')
+		if (!dom) {
+			dom = getLabelDom(currentEntity.properties.customData._value.data)
+		}
+		const screenPosition = viewer.scene.cartesianToCanvasCoordinates(positionC3)
+		if (screenPosition) {
+			dom.style.left = `${screenPosition.x}px`
+			dom.style.top = `${screenPosition.y}px`
+			dom.style.display = 'block'
+		}
+	}
 
-  // 获取弹框box
-  const getLabelDom = data => {
-    const vNode = h(MapPopUpBox, { data, removeLabel });
-    const tooltipContainer = document.createElement('div');
-    tooltipContainer.id = 'mapPopUpBox';
-    tooltipContainer.style.position = 'absolute';
-    tooltipContainer.style.transform = 'translateY(-50%)';
-    tooltipContainer.style.pointerEvents = 'none';
-    document.querySelector('.page-index').append(tooltipContainer);
-    render(vNode, tooltipContainer);
-    return tooltipContainer;
-  };
+	// 左键单机事件
+	const singleMachineEvent = async click => {
+		const pickedObject = viewer.scene.pick(click.position)
+		if (Cesium.defined(pickedObject) && pickedObject.id) {
+			const entity = pickedObject.id
+			currentEntity = entity
+			positionC3 = entity?.position?._value
+			if (!positionC3) return
+			removeLabel()
+			const customData = entity.properties.customData._value.data
+			console.log(customData)
+			if (customData.device_sn) {
+				store.commit('setSingleUavHome', { id: '123' })
+				return
+			}
+			viewer.scene.postRender.addEventListener(labelBoxRender)
+		}
+	}
 
-  // 弹框位置刷新
-  const labelBoxRender = () => {
-    let dom = document.querySelector('#mapPopUpBox');
-    if (!dom) {
-      dom = getLabelDom(currentEntity.properties.customData._value.data);
-    }
-    const screenPosition = viewer.scene.cartesianToCanvasCoordinates(positionC3);
-    if (screenPosition) {
-      dom.style.left = `${screenPosition.x}px`;
-      dom.style.top = `${screenPosition.y}px`;
-      dom.style.display = 'block';
-    }
-  };
+	const removeDom = () => {
+		const dom = document.querySelector('#mapPopUpBox')
+		if (dom && dom.parentNode) {
+			dom.parentNode.removeChild(dom)
+		}
+	}
 
-  // 左键单机事件
-  const singleMachineEvent = async click => {
-    const pickedObject = viewer.scene.pick(click.position);
-    if (Cesium.defined(pickedObject) && pickedObject.id) {
-      const entity = pickedObject.id;
-      currentEntity = entity;
-      positionC3 = entity?.position?._value;
-      if (!positionC3) return;
-      removeLabel();
-      const customData = entity.properties.customData._value.data
-      console.log(customData);
-      if (customData.device_sn){
-        store.commit('setSingleUavHome', { id: '123' });
-        return
-      }
-      viewer.scene.postRender.addEventListener(labelBoxRender);
-    }
-  };
+	// 移除 点 和 gjson 实体
+	const removeEntities = () => {
+		viewer.dataSources?.removeAll(true)
+		viewer.entities?.removeAll()
+	}
+	// 移除弹框标签
+	const removeLabel = () => {
+		viewer.scene.postRender.removeEventListener(labelBoxRender)
+		removeDom()
+	}
 
-  const removeDom = () => {
-    const dom = document.querySelector('#mapPopUpBox');
-    if (dom && dom.parentNode) {
-      dom.parentNode.removeChild(dom);
-    }
-  };
+	// 移除所有监听事件,变量置空
+	const removeAll = () => {
+		removeEntities()
+		removeLabel()
+		viewer.camera.moveEnd.removeEventListener(determineScaling)
+		handler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
+		handler?.destroy()
+		viewer = null
+		active = null
+		handler = null
+		positionC3 = null
+		currentEntity = null
+	}
+	const init = () => {
+		viewer = window.$viewer
+		handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
+		handler.setInputAction(singleMachineEvent, Cesium.ScreenSpaceEventType.LEFT_CLICK)
+		listenerHeight()
+	}
+	// onMounted(() => {
+	//   nextTick(() => {
+	//     viewer = window.$viewer;
+	//     handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
+	//     handler.setInputAction(singleMachineEvent, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+	//     listenerHeight();
+	//   });
+	// });
 
-  // 移除 点 和 gjson 实体
-  const removeEntities = () => {
-    viewer.dataSources?.removeAll(true);
-    viewer.entities?.removeAll();
-  };
-  // 移除弹框标签
-  const removeLabel = () => {
-    viewer.scene.postRender.removeEventListener(labelBoxRender);
-    removeDom();
-  };
-
-  // 移除所有监听事件,变量置空
-  const removeAll = () => {
-    removeEntities();
-    removeLabel();
-    viewer.camera.moveEnd.removeEventListener(determineScaling);
-    handler?.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
-    handler?.destroy();
-    viewer = null;
-    active = null;
-    handler = null;
-    positionC3 = null;
-    currentEntity = null;
-  };
-  const init = () => {
-    viewer = window.$viewer;
-    handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
-    handler.setInputAction(singleMachineEvent, Cesium.ScreenSpaceEventType.LEFT_CLICK);
-    listenerHeight();
-  };
-  // onMounted(() => {
-  //   nextTick(() => {
-  //     viewer = window.$viewer;
-  //     handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
-  //     handler.setInputAction(singleMachineEvent, Cesium.ScreenSpaceEventType.LEFT_CLICK);
-  //     listenerHeight();
-  //   });
-  // });
-
-  return { init, removeAll };
-};
+	return { init, removeAll }
+}

--
Gitblit v1.9.3