| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2024-10-31 10:47:29 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2024-11-09 15:08:15 |
| | | * @LastEditTime: 2024-11-11 18:27:15 |
| | | * @FilePath: \bigScreen\src\views\layout\components\scomponents\layersControl.vue |
| | | * @Description: |
| | | * |
| | |
| | | import wsgw from "@/assets/json/wsgw" |
| | | import ysgw from "@/assets/json/ysgw" |
| | | import { onUnmounted } from 'vue' |
| | | import EventBus from 'utils/bus' |
| | | |
| | | const { VITE_APP_BASE } = import.meta.env |
| | | |
| | |
| | | label: '园区倾斜摄影', |
| | | type: 'layer', |
| | | subType: '3Dtile', |
| | | url: VITE_APP_BASE + 'mx/tileset.json', |
| | | 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' |
| | | }, |
| | | ], |
| | | layerName: 'hgyq' |
| | | }, |
| | | |
| | |
| | | let tileLayers = new DC.TilesetLayer('tileLayers') |
| | | window.$viewer.addLayer(tileLayers) |
| | | |
| | | const handleCheckChange = (data, options) => { |
| | | const handleCheckChange = (data) => { |
| | | let options = treeRef.value?.getCheckedNodes() |
| | | console.log(options, 12111212) |
| | | |
| | | collectedNodes.value = [] |
| | | collectNodesWithFlag(data) |
| | | |
| | | collectedNodes.value.forEach(item => { |
| | | if (options.checkedKeys.some(i => i == item.id)) { |
| | | if (options.some(i => i.id == item.id)) { |
| | | |
| | | // const Cesium = DC |
| | | if (item.subType == '3Dtile') { |
| | | if (!addTileLayers[item.layerName]) { |
| | | addTileLayers[item.layerName] = new DC.Tileset( |
| | | item.url) |
| | | addTileLayers[item.layerName] = item.urlData.map(i => { |
| | | let tile = new DC.Tileset(i.url) |
| | | |
| | | tileLayers.addOverlay(addTileLayers[item.layerName]) |
| | | tileLayers.addOverlay(tile) |
| | | return tile |
| | | }) |
| | | |
| | | } else { |
| | | addTileLayers[item.layerName].show = true |
| | | addTileLayers[item.layerName].forEach(i => i.show = true) |
| | | } |
| | | |
| | | window.$viewer.flyTo(addTileLayers[item.layerName]) |
| | | window.$viewer.flyTo(addTileLayers[item.layerName][0]) |
| | | } else if (item.subType == 'labelPoint') { |
| | | if (!addTileLayers[item.layerName]) { |
| | | addTileLayers[item.layerName] = new DC.HtmlLayer(addTileLayers[item.layerName]) |
| | |
| | | } else { |
| | | if (addTileLayers[item.layerName]) { |
| | | if (item.subType == '3Dtile') { |
| | | addTileLayers[item.layerName].show = false |
| | | addTileLayers[item.layerName].forEach(i => i.show = false) |
| | | } else if (item.subType == 'labelPoint') { |
| | | addTileLayers[item.layerName].show = false |
| | | } else if (item.subType == 'geojsonWall') { |
| | |
| | | }) |
| | | } |
| | | |
| | | function findObjectById (data, id) { |
| | | // 遍历数据数组 |
| | | for (let i = 0; i < data.length; i++) { |
| | | const item = data[i] |
| | | |
| | | // 检查当前项的 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 中找到匹配项,返回它 |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 如果没有找到匹配项,返回 null |
| | | return null |
| | | } |
| | | |
| | | const restHandleCheckChange = (key) => { |
| | | let checkIds = treeRef.value?.getCheckedKeys() |
| | | |
| | | if (checkIds.some(i => i == key)) { |
| | | return |
| | | } |
| | | |
| | | treeRef.value?.setCheckedKeys([...checkIds, key]) |
| | | handleCheckChange([findObjectById(data, key)]) |
| | | } |
| | | |
| | | const restHandleDelChange = (key) => { |
| | | let checkIds = treeRef.value?.getCheckedKeys() |
| | | |
| | | if (!checkIds.some(i => i == key)) { |
| | | return |
| | | } |
| | | |
| | | treeRef.value?.setCheckedKeys(checkIds.filter(i => i != key)) |
| | | handleCheckChange([findObjectById(data, key)]) |
| | | } |
| | | |
| | | EventBus.on('restHandleCheckChange', restHandleCheckChange) |
| | | EventBus.on('restHandleDelChange', restHandleDelChange) |
| | | |
| | | onMounted(() => { |
| | | handleCheckChange(data.filter(i => i.id == '1'), { |
| | | checkedKeys: ['1'] |
| | | }) |
| | | handleCheckChange(data.filter(i => i.id == '1')) |
| | | }) |
| | | |
| | | onUnmounted(() => { |
| | | tileLayers && window.$viewer.removeLayer(tileLayers) |
| | | let arr = Object.keys(addTileLayers) |
| | | arr.forEach(i => { |
| | | arr.filter(i => i != 'hgyq').forEach(i => { |
| | | addTileLayers[i] && window.$viewer.removeLayer(addTileLayers[i]) |
| | | }) |
| | | |
| | | EventBus.off('restHandleCheckChange', restHandleCheckChange) |
| | | EventBus.off('restHandleDelChange', restHandleDelChange) |
| | | }) |
| | | </script> |
| | | |