shuishen
2021-12-31 19621635052322005f31579f7f3d481750898d7c
src/components/map/components/dimension.vue
@@ -3,7 +3,7 @@
        <el-radio-group v-model="dimensionValue"
                        size="medium"
                        @change="dimensionChange">
            <el-radio-button label="三 维"></el-radio-button>
            <el-radio-button label="3 维"></el-radio-button>
            <el-radio-button label="2.5维"></el-radio-button>
        </el-radio-group>
    </div>
@@ -18,14 +18,14 @@
    data () {
        return {
            DC: null,
            dimensionValue: '三 维',
            dimensionValue: '3 维',
            newLayer: null,
            provider: null,
            wallLayer: null,
            tileset: null,
            tilesetLayer: null,
            titlesetLayerFlag: false,
            oneFlag: false,
            silhouetteBlue: null,
            wallArr: [
                [116.41526036, 27.95352217, 100],
                [116.41128018, 27.95789328, 100],
@@ -90,18 +90,15 @@
                        }
                    )
                    that.tilesetLayer.addOverlay(that.tileset)
                    setTimeout(() => {
                        that.viewer.flyTo(that.tileset, 10)
                    }, 2000)
                    var silhouetteBlue = that.DC.Namespace.Cesium.PostProcessStageLibrary.createEdgeDetectionStage()
                    silhouetteBlue.uniforms.color = that.DC.Namespace.Cesium.Color.fromBytes(9, 162, 40)
                    silhouetteBlue.uniforms.length = 0.01
                    silhouetteBlue.selected = []
                    that.silhouetteBlue = that.DC.Namespace.Cesium.PostProcessStageLibrary.createEdgeDetectionStage()
                    that.silhouetteBlue.uniforms.color = that.DC.Namespace.Cesium.Color.fromBytes(9, 162, 40)
                    that.silhouetteBlue.uniforms.length = 0.01
                    that.silhouetteBlue.selected = []
                    that.viewer.scene.postProcessStages.add(
                        that.DC.Namespace.Cesium.PostProcessStageLibrary.createSilhouetteStage([
                            silhouetteBlue
                            that.silhouetteBlue
                        ])
                    )
@@ -143,7 +140,7 @@
                    })
                    that.tileset.on(that.DC.MouseEventType.MOUSE_MOVE, e => {
                        silhouetteBlue.selected = []
                        that.silhouetteBlue.selected = []
                        if (that.DC.Namespace.Cesium.defined(highlighted.feature)) {
                            highlighted.feature.color = highlighted.originalColor
@@ -151,7 +148,7 @@
                        }
                        if (e.feature !== selected.feature) {
                            silhouetteBlue.selected = [e.feature]
                            that.silhouetteBlue.selected = [e.feature]
                            highlighted.feature = e.feature
@@ -163,6 +160,72 @@
                        }
                    })
                    var provider = new that.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
                        url: 'http://www.tdtfz.com/OneMapServer/rest/services/fzsw2019/MapServer/WMTS/tile/1.0.0/fzsw2019/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}',
                        layer: 'fzsw2019',
                        style: 'default',
                        tileMatrixSetID: 'default028mm',
                        format: 'image/jpgpng',
                        tilingScheme: new that.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'
                        ]
                    })
                    that.newLayer = that.viewer.imageryLayers.addImageryProvider(provider)
                    that.wallLayer = new that.DC.VectorLayer('wallLayer')
                    that.viewer.addLayer(that.wallLayer)
                    that.wallArr.forEach(item => {
                        item = item.join(',')
                    })
                    that.wallArr = that.wallArr.join(';')
                    const wall = new that.DC.Wall(
                        that.wallArr
                    )
                    wall.setStyle({
                        material: new that.DC.WallTrailMaterialProperty({
                            color: that.DC.Namespace.Cesium.Color.fromBytes(0, 142, 255, 150),
                            // color: that.DC.Color.CYAN,
                            speed: 10
                        })
                    })
                    that.wallLayer.addOverlay(wall)
                    that.viewer.camera.setView({
                        // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                        // fromDegrees()方法,将经纬度和高程转换为世界坐标
                        destination: that.DC.Namespace.Cesium.Cartesian3.fromDegrees(116.36618337, 27.95911915, 1000.0),
                        orientation: {
                            // 指向
                            heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                    this.tilesetLayer.show = false
                    this.titlesetLayerFlag = true
                }
            }
@@ -171,10 +234,11 @@
    methods: {
        dimensionChange () {
            var that = this
            if (that.dimensionValue == '三 维') {
            if (that.dimensionValue == '3 维') {
                that.wallLayer.show = false
                that.viewer.imageryLayers.remove(that.newLayer)
                that.newLayer = null
                that.silhouetteBlue.selected = []
                that.tilesetLayer.show = true
                that.viewer.flyTo(that.tileset)
            } else {
@@ -211,29 +275,6 @@
                    ]
                })
                that.newLayer = that.viewer.imageryLayers.addImageryProvider(provider)
                if (that.oneFlag == false) {
                    that.wallLayer = new that.DC.VectorLayer('wallLayer')
                    that.viewer.addLayer(that.wallLayer)
                    that.wallArr.forEach(item => {
                        item = item.join(',')
                    })
                    that.wallArr = that.wallArr.join(';')
                    const wall = new that.DC.Wall(
                        that.wallArr
                    )
                    wall.setStyle({
                        material: new that.DC.WallTrailMaterialProperty({
                            color: that.DC.Namespace.Cesium.Color.fromBytes(0, 142, 255, 150),
                            // color: that.DC.Color.CYAN,
                            speed: 10
                        })
                    })
                    that.wallLayer.addOverlay(wall)
                    that.oneFlag = true
                }
                that.wallLayer.show = true