suerprisePlus
2024-10-23 559f0776123a2205863b5787d5b8e1e012d397d3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<template>
    <div id="mapContainer" class="mapContainer">
 
    </div>
</template>
 
<script>
import mapServer from '@/assets/js/mapSdk/mapServe.js';
import mapConfig from '@/assets/js/mapSdk/mapConfig.js';
import mapData from '@/assets/js/mapSdk/mapData.js';
import { layer_selectAll } from "@/api/mapView/map.js";
import axios from 'axios';
import road from './road';
export default {
    name: 'mapView',
    mounted() {
        this.initMap();
    },
    methods: {
        async initMap() {
            window.earthCtrl = new SmartEarth.EarthCtrl('mapContainer', {
                // 隐藏默认底图
                defaultImagery: false,
                // 隐藏logo
                printLog: false,
                // sceneMode: SmartEarth.Cesium.SceneMode.SCENE2D
                StaticFileBaseUrl: '/CimSDK/',
                navigationOption: {
                    enableCompass: false,
                    enableZoomControls: false,
                    enableDistanceLegend: false,
                    enableCompassOuterRing: false,
                },
 
            });
 
            // 初始化Cesium
            window.Cesium = SmartEarth.Cesium;
            // 初始化Viewer
            window.Viewer = earthCtrl.viewer;
            //设置地球颜色
            Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString('#A9A9A9');
            // 地形加载
            const terrain = config.terrain;
            if (terrain.isShow && terrain.isUrl) {
                const terrainProvider = await Cesium.CesiumTerrainProvider.fromUrl(terrain.isUrl, {
                    requestWaterMask: true,
                    requestVertexNormals: true,
                });
 
                Viewer.terrainProvider = terrainProvider;
            }
            // 默认设置底图
            this.addImageLayer();
        },
        addImageLayer() {
            const baseLayer = mapData.baseLayer;
            // 添加天地图底图
            mapServer.addLayer({
                serveType: 'tdMap',
                url: baseLayer.sUrl + baseLayer.vecLayer + baseLayer.lUrl,
            });
            // 添加天地图标注
            mapServer.addLayer({
                serveType: 'tdMap',
                url: baseLayer.sUrl + baseLayer.cvaLayer + baseLayer.lUrl,
            });
            // 初始化视角
            this.setdefaultPerspective();
        },
        setdefaultPerspective() {
            mapConfig.sertCameraTo(mapData.defaultPerspective);
            if (config.baseModel.url) {
                mapServer.addLayer(config.baseModel);
            }
            this.getSelectLayers();
        },
        getSelectLayers() {
            layer_selectAll().then(response => {
                if (response.data.code != 200) return
 
                response.data.result.filter(item => {
                    if (item.type == 2 && item.isShow == 1) {
                        if (item.cnName != "配网线") {
                            mapServer.addLayer(item)
                        }
                    } 
 
                })
                this.$nextTick(() => {
                    this.addRoadLayer();
                })
 
            })
        },
        addRoadLayer() {
            earthCtrl.factory.createPathLayer({
                url: road,
                // color: "#00FA9A", //线的颜色
                 color: "#ff0000", //线的颜色
                width: 5.0, //线的宽度
                pointColor: "#FFFFFF", //移动点的颜色
                speed: 1,
                far: 50000
            });
        }
    }
}
</script>
 
<style lang="scss" scoped>
.mapContainer {
    width: 100%;
    height: 100%;
}
</style>
<style>
.map-info-bar {
    display: none !important;
}
 
.el-form-item__label {
    color: white
}
</style>