liuyg
2022-03-28 0f6f73971c9c3db3d591018a8e6c2272ea07088a
src/components/map/components/dimension.vue
@@ -1,5 +1,29 @@
<template>
    <div class="dimension-cut">
        <el-button
            v-show="btnGroupShow"
            size="mini"
            class="three-stm"
            type="primary"
            @click="locationSTM"
        >s3m</el-button>
        <el-button
            v-show="btnGroupShow"
            size="mini"
            class="sat-stm"
            type="primary"
            @click="locationSAT"
        >科技</el-button>
        <el-button
            v-show="btnGroupShow"
            size="mini"
            class="sat-tc"
            type="primary"
            @click="locationTC"
        >热力图</el-button>
        <el-radio-group v-model="dimensionValue" size="medium" @change="dimensionChange">
            <el-radio-button label="三 维"></el-radio-button>
            <el-radio-button label="真三维"></el-radio-button>
@@ -26,12 +50,23 @@
let select = null
const wallLayer = null
let streenMlayer = null
let layerSat = null
let layerSATtwo = null
let tcLayer = null
let viewerHeight = 950
let smallViewerHeight = 1950
// const wallLayer = null
export default {
    name: 'dimension',
    data () {
        return {
            btnGroupShow: false,
            dimensionValue: '三 维',
            // 建筑2.5D地图
            // 建筑2.5D面数据
@@ -66,9 +101,12 @@
                [114.03954722, 27.62819644, 100],
                [114.04006133, 27.628038, 100]
            ],
            mapCenter: [115.871863, 28.743861, 400.0]
            mapCenter: [116.35381525,
                27.95839468, 950.0]
            // mapCenter: [115.871863, 28.743861, 950.0]
        }
    },
    props: ['wheelFlag', 'startWheel', 'startSmallWheel'],
    computed: {
        ...mapGetters([
            'viewerExist',
@@ -176,6 +214,45 @@
                            // minimumLevel: 19
                        }))
                    global.viewer.imageryLayers.addImageryProvider(
                        new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
                            url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer/WMTS',
                            layer: 'fzsw2019',
                            style: 'default',
                            tileMatrixSetID: 'default028mm',
                            format: 'image/jpgpng',
                            tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
                            maximumLevel: 19,
                            tileMatrixLabels: [
                                '0',
                                '1',
                                '2',
                                '3',
                                '4',
                                '5',
                                '6',
                                '7',
                                '8',
                                '9',
                                '10',
                                '11',
                                '12',
                                '13',
                                '14',
                                '15',
                                '16',
                                '17',
                                '18',
                                '19'
                            ]
                        })
                    )
                    // global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.ArcGisMapServerImageryProvider({
                    //     url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer',
                    //     layer: 'fzsw2019',
                    // }))
                    // wallLayer = new global.DC.VectorLayer('wallLayer')
                    // global.viewer.addLayer(wallLayer)
@@ -248,20 +325,27 @@
                    })
                    // 最小
                    global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
                    global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 500
                    global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1500
                    // 最大
                    global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400
                    global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 950
                    global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1950
                    // 设置相机缩小时的速率
                    global.viewer.scene.screenSpaceCameraController._minimumZoomRate = 2000
                    // global.eagleViewer.scene.screenSpaceCameraController._minimumZoomRate = 2000
                    // 设置相机放大时的速率
                    global.viewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
                    // global.eagleViewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
                    // 视角平移
                    global.viewer.scene.screenSpaceCameraController.enableRotate = true
                    global.eagleViewer.scene.screenSpaceCameraController.enableRotate = true
                    // 视角缩放
                    global.viewer.scene.screenSpaceCameraController.enableZoom = true
                    global.eagleViewer.scene.screenSpaceCameraController.enableZoom = true
                    // 视角旋转
                    global.viewer.scene.screenSpaceCameraController.enableTilt = false
                    global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false
                    that.createdLayers()
@@ -378,7 +462,7 @@
                                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                                        that.mapCenter[0],
                                        that.mapCenter[1],
                                        400.0
                                        that.mapCenter[2]
                                    ),
                                    orientation: {
                                        // 指向
@@ -397,18 +481,13 @@
                                that.dimensionValue != undefined &&
                                that.dimensionValue != '真三维'
                            ) {
                                const height = Math.ceil(
                                    global.viewer.camera.positionCartographic.height
                                )
                                if (height < 150) {
                                if (viewerHeight == 500) {
                                    global.viewer.camera.setView({
                                        destination:
                                            global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                                global.viewer.camera.positionCartographic.longitude,
                                                global.viewer.camera.positionCartographic.latitude,
                                                200
                                            ),
                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                            global.viewer.camera.positionCartographic.longitude,
                                            global.viewer.camera.positionCartographic.latitude,
                                            650
                                        ),
                                        orientation: {
                                            // 指向
                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
@@ -417,18 +496,18 @@
                                            roll: 0.0
                                        }
                                    })
                                    viewerHeight = 650
                                    this.$emit('change-wheel', false, 'startWheel')
                                    return
                                }
                                if (height < 250) {
                                if (viewerHeight == 650) {
                                    global.viewer.camera.setView({
                                        destination:
                                            global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                                global.viewer.camera.positionCartographic.longitude,
                                                global.viewer.camera.positionCartographic.latitude,
                                                300
                                            ),
                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                            global.viewer.camera.positionCartographic.longitude,
                                            global.viewer.camera.positionCartographic.latitude,
                                            800
                                        ),
                                        orientation: {
                                            // 指向
                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
@@ -437,18 +516,18 @@
                                            roll: 0.0
                                        }
                                    })
                                    viewerHeight = 800
                                    this.$emit('change-wheel', false, 'startWheel')
                                    return
                                }
                                if (height < 350) {
                                if (viewerHeight == 800) {
                                    global.viewer.camera.setView({
                                        destination:
                                            global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                                global.viewer.camera.positionCartographic.longitude,
                                                global.viewer.camera.positionCartographic.latitude,
                                                400
                                            ),
                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                            global.viewer.camera.positionCartographic.longitude,
                                            global.viewer.camera.positionCartographic.latitude,
                                            950
                                        ),
                                        orientation: {
                                            // 指向
                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
@@ -457,6 +536,8 @@
                                            roll: 0.0
                                        }
                                    })
                                    viewerHeight = 950
                                    this.$emit('change-wheel', false, 'startWheel')
                                }
                            }
                        }
@@ -467,18 +548,13 @@
                                that.dimensionValue != undefined &&
                                that.dimensionValue != '真三维'
                            ) {
                                const height = Math.ceil(
                                    global.viewer.camera.positionCartographic.height
                                )
                                if (height > 350) {
                                if (viewerHeight == 950) {
                                    global.viewer.camera.setView({
                                        destination:
                                            global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                                global.viewer.camera.positionCartographic.longitude,
                                                global.viewer.camera.positionCartographic.latitude,
                                                300
                                            ),
                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                            global.viewer.camera.positionCartographic.longitude,
                                            global.viewer.camera.positionCartographic.latitude,
                                            800
                                        ),
                                        orientation: {
                                            // 指向
                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
@@ -487,18 +563,18 @@
                                            roll: 0.0
                                        }
                                    })
                                    viewerHeight = 800
                                    this.$emit('change-wheel', false, 'startWheel')
                                    return
                                }
                                if (height > 250) {
                                if (viewerHeight == 800) {
                                    global.viewer.camera.setView({
                                        destination:
                                            global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                                global.viewer.camera.positionCartographic.longitude,
                                                global.viewer.camera.positionCartographic.latitude,
                                                200
                                            ),
                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                            global.viewer.camera.positionCartographic.longitude,
                                            global.viewer.camera.positionCartographic.latitude,
                                            650
                                        ),
                                        orientation: {
                                            // 指向
                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
@@ -507,18 +583,18 @@
                                            roll: 0.0
                                        }
                                    })
                                    viewerHeight = 650
                                    this.$emit('change-wheel', false, 'startWheel')
                                    return
                                }
                                if (height > 150) {
                                if (viewerHeight == 650) {
                                    global.viewer.camera.setView({
                                        destination:
                                            global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                                global.viewer.camera.positionCartographic.longitude,
                                                global.viewer.camera.positionCartographic.latitude,
                                                100
                                            ),
                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                                            global.viewer.camera.positionCartographic.longitude,
                                            global.viewer.camera.positionCartographic.latitude,
                                            500
                                        ),
                                        orientation: {
                                            // 指向
                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
@@ -527,16 +603,27 @@
                                            roll: 0.0
                                        }
                                    })
                                    viewerHeight = 500
                                    this.$emit('change-wheel', false, 'startWheel')
                                }
                            }
                        }
                    global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
                    global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
                }
            }
        }
    },
    methods: {
        zoomToOpen () {
        },
        locationSTM () {
            global.viewer.flyToPosition('116.45793269658417,39.92711385557482,617.5967826044838,181.95219395269424,-21.286437065473546')
        },
        mouseMoveEvent (e) {
            var that = this
@@ -593,10 +680,6 @@
        },
        mapCameraEvent () {
            const height = Math.ceil(
                global.viewer.camera.positionCartographic.height
            )
            global.viewer.camera.setView({
                orientation: {
                    // 指向
@@ -607,72 +690,260 @@
                }
            })
            if (height < 150) {
                global.viewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.viewer.camera.positionCartographic.longitude,
                        global.viewer.camera.positionCartographic.latitude,
                        100
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
            if (this.startWheel == false) return
            if (height > 150 && height <= 250) {
                global.viewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.viewer.camera.positionCartographic.longitude,
                        global.viewer.camera.positionCartographic.latitude,
                        200
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
            if (this.wheelFlag) { // 下
                if (viewerHeight == 950) {
                    global.viewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.viewer.camera.positionCartographic.longitude,
                            global.viewer.camera.positionCartographic.latitude,
                            800
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    viewerHeight = 800
                    this.$emit('change-wheel', false, 'startWheel')
                    return
                }
            if (height > 250 && height <= 350) {
                global.viewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.viewer.camera.positionCartographic.longitude,
                        global.viewer.camera.positionCartographic.latitude,
                        300
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
                if (viewerHeight == 800) {
                    global.viewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.viewer.camera.positionCartographic.longitude,
                            global.viewer.camera.positionCartographic.latitude,
                            650
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    viewerHeight = 650
                    this.$emit('change-wheel', false, 'startWheel')
                    return
                }
            if (height > 350) {
                global.viewer.camera.setView({
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                        global.viewer.camera.positionCartographic.longitude,
                        global.viewer.camera.positionCartographic.latitude,
                        400
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
                if (viewerHeight == 650) {
                    global.viewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.viewer.camera.positionCartographic.longitude,
                            global.viewer.camera.positionCartographic.latitude,
                            500
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    viewerHeight = 500
                    this.$emit('change-wheel', false, 'startWheel')
                }
            } else { // 上
                if (viewerHeight == 500) {
                    global.viewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.viewer.camera.positionCartographic.longitude,
                            global.viewer.camera.positionCartographic.latitude,
                            650
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    viewerHeight = 650
                    this.$emit('change-wheel', false, 'startWheel')
                    return
                }
                if (viewerHeight == 650) {
                    global.viewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.viewer.camera.positionCartographic.longitude,
                            global.viewer.camera.positionCartographic.latitude,
                            800
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    viewerHeight = 800
                    this.$emit('change-wheel', false, 'startWheel')
                    return
                }
                if (viewerHeight == 800) {
                    global.viewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.viewer.camera.positionCartographic.longitude,
                            global.viewer.camera.positionCartographic.latitude,
                            950
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    viewerHeight = 950
                    this.$emit('change-wheel', false, 'startWheel')
                }
            }
        },
        smallMapCameraEvent () {
            global.eagleViewer.camera.setView({
                orientation: {
                    // 指向
                    heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                    // 视角
                    pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                    roll: 0.0
                }
            })
            if (this.startSmallWheel == false) return
            if (this.wheelFlag) { // 下
                if (smallViewerHeight == 1950) {
                    global.eagleViewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.eagleViewer.camera.positionCartographic.longitude,
                            global.eagleViewer.camera.positionCartographic.latitude,
                            1800
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    smallViewerHeight = 1800
                    this.$emit('change-wheel', false, 'startSmallWheel')
                    return
                }
                if (smallViewerHeight == 1800) {
                    global.eagleViewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.eagleViewer.camera.positionCartographic.longitude,
                            global.eagleViewer.camera.positionCartographic.latitude,
                            1650
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    smallViewerHeight = 1650
                    this.$emit('change-wheel', false, 'startSmallWheel')
                    return
                }
                if (smallViewerHeight == 1650) {
                    global.eagleViewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.eagleViewer.camera.positionCartographic.longitude,
                            global.eagleViewer.camera.positionCartographic.latitude,
                            1500
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    smallViewerHeight = 1500
                    this.$emit('change-wheel', false, 'startSmallWheel')
                }
            } else { // 上
                if (smallViewerHeight == 1500) {
                    global.eagleViewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.eagleViewer.camera.positionCartographic.longitude,
                            global.eagleViewer.camera.positionCartographic.latitude,
                            1650
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    smallViewerHeight = 1650
                    this.$emit('change-wheel', false, 'startSmallWheel')
                    return
                }
                if (smallViewerHeight == 1650) {
                    global.eagleViewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.eagleViewer.camera.positionCartographic.longitude,
                            global.eagleViewer.camera.positionCartographic.latitude,
                            1800
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    smallViewerHeight = 1800
                    this.$emit('change-wheel', false, 'startSmallWheel')
                    return
                }
                if (smallViewerHeight == 1800) {
                    global.eagleViewer.camera.setView({
                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                            global.eagleViewer.camera.positionCartographic.longitude,
                            global.eagleViewer.camera.positionCartographic.latitude,
                            1950
                        ),
                        orientation: {
                            // 指向
                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    smallViewerHeight = 1950
                    this.$emit('change-wheel', false, 'startSmallWheel')
                }
            }
        },
@@ -801,14 +1072,117 @@
            }
        },
        locationSAT () {
            global.viewer.flyToPosition('121.4941629,31.2091462,1859.56,0,-28.71')
        },
        locationTC () {
            global.viewer.flyToPosition('120.670183527,31.348282115,109658.22,0,-89.90659095062371')
        },
        generatePosition (num) {
            const list = []
            for (let i = 0; i < num; i++) {
                const lng = 120.38105869 + Math.random() * 0.5
                const lat = 31.10115627 + Math.random() * 0.5
                list.push(new global.DC.Position(lng, lat))
            }
            return list
        },
        removeTC () {
            global.viewer.removeLayer(tcLayer)
            tcLayer = null
        },
        createTC () {
            tcLayer = new global.DC.HeatLayer('tcLayer', {
                useGround: true,
                radius: 40
            })
            global.viewer.addLayer(tcLayer)
            const positions = this.generatePosition(3000)
            tcLayer.setPositions(positions)
        },
        // 科技感删除
        removeSAT () {
            global.viewer.removeLayer(layerSat)
            global.viewer.removeLayer(layerSATtwo)
            layerSat = null
            layerSATtwo = null
        },
        // 科技感添加
        createSAT () {
            function generatePosition (num, isAdd) {
                const list = []
                for (let i = 0; i < num; i++) {
                    const lng = 121.49536592256028 + Math.random() * 0.04 * (isAdd ? 1 : -1)
                    const lat = 31.241616722278213 + Math.random() * 0.04 * (isAdd ? 1 : -1)
                    list.push({ lng, lat })
                }
                return list
            }
            layerSat = new global.DC.TilesetLayer('layerSat').addTo(global.viewer)
            const build = new global.DC.Tileset(
                'http://resource.dvgis.cn/data/3dtiles/ljz/tileset.json',
                { skipLevels: true }
            )
            const fs = `
                        varying vec3 v_positionEC;
                        void main(void){
                            vec4 position = czm_inverseModelView * vec4(v_positionEC,1); // 位置
                            float glowRange = 100.0; // 光环的移动范围(高度)
                            gl_FragColor = vec4(0.2,  0.5, 1.0, 1.0); // 颜色
                            gl_FragColor *= vec4(vec3(position.z / 100.0), 1.0); // 渐变
                            // 动态光环
                            float time = fract(czm_frameNumber / 360.0);
                            time = abs(time - 0.5) * 2.0;
                            float diff = step(0.005, abs( clamp(position.z / glowRange, 0.0, 1.0) - time));
                            gl_FragColor.rgb += gl_FragColor.rgb * (1.0 - diff);
                        }
                        `
            build.setCustomShader(fs)
            layerSat.addOverlay(build)
            layerSATtwo = new global.DC.PrimitiveLayer('layer').addTo(global.viewer)
            let positions = generatePosition(50, true)
            positions = positions.concat(generatePosition(50))
            positions.forEach(item => {
                const position = global.DC.Position.fromObject(item)
                const end = position.copy()
                end.alt = 5000 * Math.random()
                const line = new global.DC.FlowLinePrimitive([position, end], 0.5)
                line.setStyle({
                    speed: 6 * Math.random(),
                    color: global.DC.Color.fromCssColorString('rgb(141,172,172)'),
                    percent: 0.1,
                    gradient: 0.01
                })
                layerSATtwo.addOverlay(line)
            })
        },
        dimensionChange () {
            var that = this
            that.$store.commit('SET_TWOORTHREE', that.dimensionValue)
            if (that.dimensionValue == '真三维') {
                that.btnGroupShow = true
                that.createSAT()
                that.createTC()
                global.viewer.off(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent)
                global.viewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
                global.eagleViewer.off(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
                that.removeLayers()
                global.viewer.imageryLayers.remove(baseMapLayer)
                baseMapLayer = null
@@ -827,13 +1201,20 @@
                tilesetLayer.addOverlay(tileset)
                tileset.on(global.DC.MouseEventType.CLICK, that.tilesetClick)
                tilesetLayer.show = true
                streenMlayer = new global.DC.S3MLayer('streenMlayer', 'http://resource.dvgis.cn/data/3dtiles/CBD/cbd.scp')
                global.viewer.addLayer(streenMlayer)
                // 最小
                global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
                global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1.0
                // 最大
                global.viewer.scene.screenSpaceCameraController.maximumZoomDistance =
                    Number.POSITIVE_INFINITY
                global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance =
                    Number.POSITIVE_INFINITY
                // 视角旋转
                global.viewer.scene.screenSpaceCameraController.enableTilt = true
                global.eagleViewer.scene.screenSpaceCameraController.enableTilt = true
                // 115.877863,28.741661
                global.viewer.camera.setView({
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
@@ -851,15 +1232,38 @@
                        roll: 0.0
                    }
                })
                global.eagleViewer.camera.setView({
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                        that.mapCenter[0],
                        that.mapCenter[1],
                        1220.0
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(-9),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54),
                        roll: 0.0
                    }
                })
            } else {
                that.btnGroupShow = false
                that.removeSAT()
                that.removeTC()
                global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, that.mouseMoveEvent)
                global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
                global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
                tileset.off(global.DC.MouseEventType.CLICK, that.tilesetClick)
                tilesetLayer.removeOverlay(tileset)
                tilesetLayer.show = false
                global.viewer.removeLayer(tilesetLayer)
                tileset = null
                tilesetLayer = null
                global.viewer.removeLayer(streenMlayer)
                streenMlayer = null
                that.createdLayers()
                baseMapLayer = global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
@@ -873,7 +1277,24 @@
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                        that.mapCenter[0],
                        that.mapCenter[1],
                        400.0
                        that.mapCenter[2]
                    ),
                    orientation: {
                        // 指向
                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
                global.eagleViewer.camera.setView({
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                        that.mapCenter[0],
                        that.mapCenter[1],
                        1950.0
                    ),
                    orientation: {
                        // 指向
@@ -884,11 +1305,14 @@
                    }
                })
                // 最小
                global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100
                global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 500
                global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1500
                // 最大
                global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 400
                global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 950
                global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1950
                // 视角旋转
                global.viewer.scene.screenSpaceCameraController.enableTilt = false
                global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false
            }
        }
    }
@@ -904,4 +1328,25 @@
    // height: 40px;
    z-index: 1;
}
.three-stm {
    position: fixed;
    top: 66px;
    right: 10px;
    z-index: 99;
}
.sat-stm {
    position: fixed;
    top: 66px;
    right: 75px;
    z-index: 99;
}
.sat-tc {
    position: fixed;
    top: 66px;
    right: 141px;
    z-index: 99;
}
</style>