guonan
2025-07-08 79f9b20e2661a560604e78a8e277eb5775747443
src/components/tools/LayerTree.vue
@@ -14,7 +14,12 @@
<script setup>
import { ref, onMounted, watch, nextTick, onUnmounted, watchEffect } from "vue";
import { createPoint, removeEntities, addTileset } from "@/utils/map";
import {
  createPoint,
  removeEntities,
  addTileset,
  clearAllPoints,
} from "@/utils/map";
import { deviceDictList, getDictName } from "@/constant/dict.js";
import { useRoute } from "vue-router";
import {
@@ -76,7 +81,7 @@
  try {
    TerrainLayer = await earthCtrl.factory.createTerrainLayer({
      sourceType: "ctb",
      url: "http://106.120.22.26:9103/gisserver/ctsserver/sunhugoudem84",
      url: "http://106.120.22.26:9103/gisserver/ctsserver/sunhugoudem",
      requestVertexNormals: true,
    });
    treeMap.set("地形数据", TerrainLayer);
@@ -238,9 +243,7 @@
  const list = treeMap.get(layerName);
  if (list && Array.isArray(list)) {
    list.forEach((entity) => {
      if (viewer.entities.contains(entity)) {
        viewer.entities.remove(entity);
      }
      clearAllPoints();
    });
  }
  treeMap.delete(layerName);
@@ -253,17 +256,14 @@
  if (simStore.DeviceShowSwitch) {
    const deviceList = simStore.devices
      .filter((item) => item.deviceName?.includes("孙胡沟"))
      .map((item) => {
        const entity = createPoint({
          ...item,
          type: getDictName(deviceDictList, item.dictDeviceType),
          name: item.deviceName.split("孙胡沟")[1],
          id: item.deviceId,
          className: "device",
          showLabel: true,
        });
        entity.show = true;
        return entity;
      .map(async (item) => {
        const entity = viewer.entities.getById(item.deviceId);
        item.type = getDictName(deviceDictList, item.dictDeviceType);
        item.name = item.deviceName.split("孙胡沟")[1];
        item.id = item.deviceId;
        item.className = "device";
        item.showLabel = true;
        await createPoint(item);
      });
    if (deviceList.length) {
@@ -279,18 +279,16 @@
  if (simStore.DangerShowSwitch) {
    const dangerPoints = simStore.DangerPoint.filter((item) =>
      item.position?.includes("孙胡沟")
    ).map((item) => {
      const entity = createPoint({
        id: item.hdId,
        name: item.hdName,
        latitude: item.lat,
        longitude: item.lon,
        showBillboard: true,
        type: item.disasterType,
        className: "district",
      });
      entity.show = true;
      return entity;
    ).map(async (item) => {
      const entity = viewer.entities.getById(item.hdId);
      item.id = item.hdId;
      item.name = item.hdName;
      item.latitude = item.lat;
      item.longitude = item.lon;
      item.showBillboard = true;
      item.type = item.disasterType;
      item.className = "district";
      await createPoint(item);
    });
    if (dangerPoints.length) {
@@ -325,6 +323,7 @@
 */
function addTetrahedron() {
  getSafePoint().then((res) => {
    console.log(res,'resresresres')
    const geoJsonData = convertToGeoJson(res.data); // 转换为 GeoJSON
    // 加载 GeoJSON 数据到地图
    loadAreaPolygon(geoJsonData, true).then((entities) => {