From 703703929e97b94ca1c1c5e35a578e5fe9d4cfea Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期一, 30 九月 2024 09:58:04 +0800 Subject: [PATCH] 代码修改 --- src/views/visual/mapView/index.vue | 155 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 144 insertions(+), 11 deletions(-) diff --git a/src/views/visual/mapView/index.vue b/src/views/visual/mapView/index.vue index a1378c1..4cecfec 100644 --- a/src/views/visual/mapView/index.vue +++ b/src/views/visual/mapView/index.vue @@ -13,7 +13,8 @@ </span> <div v-if="item.children"> <el-dropdown-menu v-show="item.children" slot="dropdown"> - <el-dropdown-item style="text-align: center" :command="res" v-for="(res, key) in item.children" :key="key">{{ res.name }}</el-dropdown-item> + <el-dropdown-item style="text-align: center" :command="res" + v-for="(res, key) in item.children" :key="key">{{ res.name }}</el-dropdown-item> </el-dropdown-menu> </div> </el-dropdown> @@ -28,42 +29,161 @@ <i :size="20" class="el-icon-d-arrow-left"></i> </div> </div> + <!-- 鍥惧眰绠$悊 --> <layer-manager ref="layerManager"></layer-manager> + <!-- 鍧愭爣瀹氫綅 --> <location ref="location"></location> + <!-- 鐭ヨ瘑鍥捐氨 --> <knowledge ref="knowledge"></knowledge> + <!-- 绾胯矾婕父 --> <lineRoaming ref="lineRoaming"></lineRoaming> + <!-- 鍦颁笅妯″紡 --> + <undergroundMode ref="undergroundMode"></undergroundMode> + <!-- 鏁版嵁鍒嗘瀽 --> + <dataAnalysis ref="dataAnalysis"></dataAnalysis> + <!-- 鏁版嵁缁熻 --> + <dataStatistics ref="dataStatistics"></dataStatistics> + <!-- 灞炴�т俊鎭� --> + <attributeInfo ref="attributeInfo"></attributeInfo> + <map-info :childObj="childObj" ref="mapInfo"></map-info> </div> </div> </template> <script> -import mapInit from '@/assets/js/mapSdk/index.js'; +import mapInit from '../../../assets/js/mapSdk/index.js'; import mapData from '@/assets/js/mapSdk/mapData.js'; import layerManager from './layerManager.vue'; import menuManager from '@/assets/js/mapSdk/menuManager.js'; import location from './location.vue'; import knowledge from './knowledge.vue'; import lineRoaming from './lineRoaming.vue'; - +import { layer_selectAll } from '@/api/mapView/map.js'; +import configTools from '@/assets/js/configTools'; +import store from '@/store'; +import mapServer from '@/assets/js/mapSdk/mapServe'; +import undergroundMode from './undergroundMode.vue'; +import dataAnalysis from './dataAnalysis.vue'; +import dataStatistics from './dataStatistics.vue'; +import attributeInfo from './attributeInfo.vue'; +import mapInfo from './mapInfo.vue'; export default { name: 'mapView', - components: { layerManager, location, knowledge, lineRoaming }, + components: { layerManager, location, knowledge, lineRoaming, undergroundMode, dataAnalysis, dataStatistics, attributeInfo, mapInfo }, data() { return { menuIsShow: false, menuOption: [], childMenuIsShow: true, childMenuOption: [], + childObj: [], + showEarth: false, }; }, - mounted() { - this.mapViewStart(); + created() { + console.log('created'); }, + mounted() { + this.showEarth = true; + this.mapViewStart(); + this.$busEvent.$on('CHANGE_MAPINFO', (res) => { + this.setMapInfo(res); + }); + }, + beforeCreate() { + console.log('beforeCreate'); + }, + beforeDestroy() { + this.$store.dispatch('mapLayers/changeLayerTree', []); + this.$store.dispatch('mapLayers/changeDefaultLayer', []); + }, + methods: { + setMapInfo(res) { + // console.log(res); + if (res.length > 0) { + this.childObj = res; + setTimeout(() => { + this.$refs && this.$refs.mapInfo && this.$refs.mapInfo.open(); + }, 200); + } + }, mapViewStart() { this.menuOption = mapData.menuData; - this.$nextTick(() => { - mapInit.Init(); + + window.earthCtrl = new SmartEarth.EarthCtrl( + 'sdkContainer', + { + // 闅愯棌榛樿搴曞浘 + defaultImagery: false, + // 闅愯棌logo + printLog: false, + // sceneMode: SmartEarth.Cesium.SceneMode.SCENE2D + StaticFileBaseUrl: '/CimSDK/', + }, + {}, + {}, + () => { + setTimeout(() => { + mapServer.layerList = []; + //鍒濆鍖朇esium + window.Cesium = SmartEarth.Cesium; + // 鍒濆鍖朧iewer + window.Viewer = window.earthCtrl.viewer; + //璁剧疆鍦扮悆棰滆壊 + window.Viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString('#A9A9A9'); + window.Viewer.imageryLayers.removeAll(); + const serverUrl = config.geoServer; + const layer = new Cesium.WebMapServiceImageryProvider({ + url: serverUrl.url + serverUrl.wms, + layers: serverUrl.layers[1], + parameters: { + transparent: true, + format: 'image/png', + srs: 'EPSG:4490', + styles: '', + cql_filter: '', + }, + tileWidth: 512, + tileHeight: 512, + }); + + window.Viewer.imageryLayers.addImageryProvider(layer); + this.setStart(); + + }, 500); + } + ); + }, + setStart() { + mapInit.Init(); + setTimeout(() => { + if (config.baseModel.url) { + var model = window.earthCtrl.factory.create3DTilesets({ + url: config.baseModel.url + + }); + } + this.getSelectLayers(); + }, 500); + }, + + getSelectLayers() { + layer_selectAll().then((response) => { + if (response.data.code != 200) return; + const defaultLayer = []; + const val = response.data.result.filter((item) => { + item.checked = false; + if (item.type == 2 && item.isShow == 1) { + item.checked = true; + mapServer.addLayer(item); + defaultLayer.push(item.id); + } + return item; + }); + this.$store.dispatch('mapLayers/changeDefaultLayer', defaultLayer); + var obj = configTools.getTreeData(val); + this.$store.dispatch('mapLayers/changeLayerTree', obj); }); }, setMenuClose() { @@ -86,6 +206,7 @@ this.$refs && this.$refs.knowledge && this.$refs.knowledge.close(); }, setPopShow(response) { + console.log(response); switch (response) { case '鍥惧眰绠$悊': this.$refs && this.$refs.layerManager && this.$refs.layerManager.open(); @@ -98,6 +219,18 @@ break; case '绾胯矾婕父': this.$refs && this.$refs.lineRoaming && this.$refs.lineRoaming.open(); + break; + case '鍦颁笅妯″紡': + this.$refs && this.$refs.undergroundMode && this.$refs.undergroundMode.open(); + break; + case '鏁版嵁鍒嗘瀽': + this.$refs && this.$refs.dataAnalysis && this.$refs.dataAnalysis.open(); + break; + case '灞炴�т俊鎭�': + this.$refs && this.$refs.attributeInfo && this.$refs.attributeInfo.open(); + break; + case '鏁版嵁缁熻': + this.$refs && this.$refs.dataStatistics && this.$refs.dataStatistics.open(); break; default: break; @@ -139,7 +272,7 @@ .rightMenu { width: 30px; height: 40px; - background: rgba(245, 245, 245, 1); + background: rgba(255, 255, 255, 1); border: 1px solid rgb(245, 245, 245); color: #4ab1fc; display: flex; @@ -151,7 +284,7 @@ .closeMenu { width: 30px; height: 100%; - background: rgba(245, 245, 245, 1); + background: rgb(255, 255, 255); color: #4ab1fc; display: flex; position: relative; @@ -161,7 +294,7 @@ .menuItemBox { color: #7a7a7a; - background: rgba(245, 245, 245, 1); + background: rgb(255, 255, 255); line-height: 40px; padding: 0px 10px; font-size: 14px; -- Gitblit v1.9.3