智慧园区前端大屏
shuishen
2025-01-08 dbf3346c685a29e7f9414b2717e3ea5c427262ca
src/pages/map/components/scomponents/layersControl.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-31 10:47:29
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2025-01-04 20:26:15
 * @LastEditTime: 2025-01-08 14:44:29
 * @FilePath: \bigScreen\src\pages\map\components\scomponents\layersControl.vue
 * @Description:
 *
@@ -78,6 +78,7 @@
// import rqgw from "@/assets/json/rqgw"
import wsgw from "@/assets/json/wsgw"
import ysgw from "@/assets/json/ysgw"
import track from "@/assets/json/track"
import { onUnmounted } from 'vue'
import EventBus from 'utils/bus'
import { usePointStore } from 'store/usepoint'
@@ -116,14 +117,14 @@
    type: 'layer',
    subType: '3Dtile',
    urlData: [
      // {
      //   url: '/3Dtile/lcmx/tile_01/tileset.json',
      //   label: 'tile_01'
      // },
      // {
      //   url: '/3Dtile/lcmx/tile_02/tileset.json',
      //   label: 'tile_02'
      // },
      {
        url: '/3Dtile/rcmx/tile_01/tileset.json',
        label: 'tile_01'
      },
      {
        url: '/3Dtile/rcmx/tile_02/tileset.json',
        label: 'tile_02'
      },
    ],
    layerName: 'hgyq'
  },
@@ -390,16 +391,28 @@
        layerName: 'ql'
      },
      // {
      //   parentId: '3',
      //   id: '3-9',
      //   label: '雨水管网',
      //   type: 'layer',
      //   subType: 'geojsonPipe',
      //   layerName: 'ysgw',
      //   source: ysgw,
      //   color: DC.Color.CYAN.withAlpha(0.9),
      //   height: 48,
      // },
      {
        parentId: '3',
        id: '3-9',
        label: '雨水管网',
        id: '3-10',
        label: '排洪渠',
        type: 'layer',
        subType: 'geojsonPipe',
        layerName: 'ysgw',
        source: ysgw,
        color: DC.Color.CYAN.withAlpha(0.9),
        height: 48,
        subType: 'geojsonPolygon',
        layerName: 'track',
        source: track,
        color: DC.Color.BLUE.withAlpha(0.9),
        height: 30,
      },
    ]
  },
@@ -461,7 +474,7 @@
        },
        showParams: 'category',
        className: 'fxy-larger',
        backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-jd.png',
        backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-zd-b.png',
        showPanel: false,
        layerName: 'fxyLarger',
        incident: (e) => {
@@ -488,7 +501,46 @@
          addPopLayers[attrParams.name].addOverlay(divIcon)
        }
      },
      {
        parentId: '4',
        id: '4-3',
        label: '重大',
        type: 'layer',
        subType: 'labelPoint',
        method: getRiskList,
        params: {
          riskLevel: 3,
          size: 1000
        },
        showParams: 'category',
        className: 'fxy-larger-b',
        backgroundIcon: VITE_APP_BASE + 'img/mapicon/fxy-jd.png',
        showPanel: false,
        layerName: 'fxyLargerB',
        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>
            </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',
@@ -532,14 +584,14 @@
    ]
  },
  // {
  //   id: '5',
  //   label: '园区范围',
  //   type: 'layer',
  //   subType: 'geojsonWall',
  //   layerName: 'yqfw',
  //   source: yqfw
  // },
  {
    id: '5',
    label: '园区范围',
    type: 'layer',
    subType: 'geojsonWall',
    layerName: 'yqfw',
    source: yqfw
  },
  {
    id: '7',
@@ -688,7 +740,7 @@
              skipLevelOfDetail: true,
              baseScreenSpaceError: 1024,
              maximumScreenSpaceError: 16, // 数值加大,能让最终成像变模糊
              maximumScreenSpaceError: 256, // 数值加大,能让最终成像变模糊
              skipScreenSpaceErrorFactor: 128,
              skipLevels: 5,
              immediatelyLoadDesiredLevelOfDetail: false,
@@ -770,11 +822,9 @@
          addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
          window.$viewer.addLayer(addTileLayers[item.layerName])
          console.log(item.source.geometries, 906666)
          item.source.geometries.forEach(i => {
          item.source.features.forEach(i => {
            let wall = new DC.Wall(
              i.coordinates[0].map(d => [d[0], d[1], 125].join(',')).join(';')
              i.geometry.coordinates[0].map(d => [...d, 125].join(',')).join(';')
            )
            wall.setStyle({
@@ -804,7 +854,6 @@
            }
            return positions
          }
          console.log(item.source.geometries, 465465)
          item.source.geometries.forEach(i => {
            let polylineVolume = new DC.PolylineVolume(
              i.coordinates.map(d => [d[0], d[1], item.height].join(',')).join(';'),
@@ -848,28 +897,16 @@
        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(';')
                } else {
                  console.error('Invalid geom structure')
                }
              } 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)
          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
@@ -948,9 +985,9 @@
// 飞到园区范围
const flyToyqfw = () => {
  window.$viewer.zoomToPosition(new DC.Position(
    116.2819,
    27.9400,
    8000,
    115.6050,
    29.7420,
    6000,
    0,
    -45,
    0