From 0f0d87ffbe149d47342d2bf5d5e9ae6ce130c901 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期四, 20 十月 2022 09:44:05 +0800 Subject: [PATCH] 综合展示 --- src/views/Synthesis/analyse.vue | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 209 insertions(+), 9 deletions(-) diff --git a/src/views/Synthesis/analyse.vue b/src/views/Synthesis/analyse.vue index e676895..719a398 100644 --- a/src/views/Synthesis/analyse.vue +++ b/src/views/Synthesis/analyse.vue @@ -12,15 +12,25 @@ <div class="div_li">{{ $t(item.name) }}</div> </li> </ul> + <mapinfo ref="mapinfo" /> </div> </template> <script> +// 娴嬮噺-淇℃伅寮圭獥 +import mapinfo from '../Tools/mapinfo.vue'; export default { + components: { + mapinfo, + }, data() { return { + changeAnalsyFlag: null, isoline: null, isolineFlag: false, + isslopeFlag: false, + isslopeType: null, + dxpmIndex: null, itemsOne: [ { id: '1', @@ -65,25 +75,215 @@ ], }; }, - mounted() { - if (this.isoline == null) { - this.isoline = new SmartEarth.ElevationTool(sgworld); - } - }, + methods: { changeAnalsy(res) { + var that = this; switch (res.id) { case '1': - this.isolineFlag = !this.isolineFlag; - this.isoline.tf = this.isolineFlag; - this.isoline.render(); + that.isolineFlag = !that.isolineFlag; + elevationTool.tf = that.isolineFlag; + elevationTool.render(); break; case '2': - elevationTool.type = 'slope'; + that.isslopeFlag = !that.isslopeFlag; + if (that.isslopeFlag == true) { + elevationTool.type = 'slope'; + } else { + elevationTool.type = 'none'; + } elevationTool.render(); + break; + case '4': + if (window.AnalysisDXPM) { + this.clear(res.id); + } else { + this.addterrainSectionAnalysis(); + } + break; + case '5': + if (window.AnalysisFlood) { + this.clear(res.id); + } else { + this.addAnalysisFlood(); + } + break; + case '6': + var that = this; + var volumetricMeasurementTool = + sgworld.Creator.createVolumetricMeasureTool(); + volumetricMeasurementTool.startDrawing( + { ...this.colorAll, onlyTerrain: false }, + 'auto', + (data) => { + if (volumetricMeasurementTool.popupData) { + volumetricMeasurementTool.popupData.value = `濉柟锛�${ + data.volume.fill.toFixed(4) + data.unit.fill + }<br>鎸栨柟锛�${data.volume.dig.toFixed(4) + data.unit.dig}`; + } else { + data.id = sgworld.Core.getuid(); + this.measureData.set(data.id, volumetricMeasurementTool); + let popupData = that.openMeasureResultInfo('浣撶Н鏂归噺', data); + volumetricMeasurementTool.popupData = popupData; + } + } + ); + break; + case '7': + window.model = null; + var url = + 'http://183.162.245.49:8099/pcdata/JC_MAX_MX/SN/tileset.json'; + model = sgworld.Creator.create3DTilesets( + '', + url, + { height: 670 }, + {}, + '0', + true, + (data) => { + sgworld.Navigate.flyToObj(data); + } + ); + setTimeout(() => { + model.clippingModel({ + direction: 'x', + }); + }, 5000); + break; + case '8': + if (openStreetMap.item.show == false) { + openStreetMap.item.show = true; + sgworld.Analysis.createCurtainContrast(0, 1); + } else { + openStreetMap.item.show = false; + sgworld.Analysis.clearCurtainContrast(); + } break; } }, + clear(res) { + switch (res) { + case '4': + layer.close(this.dxpmIndex); + this.dxpmIndex = undefined; + if (window.AnalysisDXPM) { + window.AnalysisDXPM.flyPoint && + Viewer.entities.remove(window.AnalysisDXPM.flyPoint); + window.AnalysisDXPM && window.AnalysisDXPM.deleteObject(); + window.AnalysisDXPM = undefined; + } + break; + case '5': + window.AnalysisFlood && window.AnalysisFlood.endWater(); + window.AnalysisFlood = undefined; + + break; + } + }, + openMeasureResultInfo(name, data) { + let info = ''; + switch (name) { + case '姘村钩璺濈': + case '绌洪棿璺濈': + info = '鎬婚暱搴︼細' + data.distance[data.distance.length - 1]; + break; + case '娴锋嫈楂樺害': + info = '娴锋嫈锛�' + data.height; + break; + case '鍨傜洿楂樺害': + info = `${data.gddistance}<br>${data.kjdistance}<br>${data.spdistance}`; + break; + case '琛ㄩ潰闈㈢Н': + case '骞抽潰闈㈢Н': + info = data.mj; + break; + case '瑙掑害': + data.labels.forEach((label) => { + info += label.label.text.getValue() + '<br>'; + }); + break; + case '浣撶Н鏂归噺': + info = `濉柟锛�${ + data.volume.fill.toFixed(4) + data.unit.fill + }<br>鎸栨柟锛�${data.volume.dig.toFixed(4) + data.unit.dig}`; + break; + } + return ( + this.$refs && + this.$refs.mapinfo && + this.$refs.mapinfo.open(name, info, { + close: () => { + // 娓呴櫎娴嬮噺 + this.clearMeasure(data.id); + }, + }) + ); + }, + clearMeasure(id) { + if (id) { + let data = this.measureData.get(id); + data && data.deleteObject && data.deleteObject(); + // 浣撶Н鏂归噺 + data && data.cleanUp && data.cleanUp(); + this.measureData.delete(id); + } else { + this.measureData.forEach((data) => { + data.deleteObject && data.deleteObject(); + // 浣撶Н鏂归噺 + data.cleanUp && data.cleanUp(); + }); + this.measureData.clear(); + } + }, + addterrainSectionAnalysis() { + window.AnalysisDXPM = sgworld.Command.execute( + 2, + 6, + { cyjj: 50, objid: 0 }, + (Distance) => { + if (Distance.gcs && Distance.gcs.length) { + window.AnalysisDXPM.analyseData = Distance; + this.dxpmIndex = layer.open({ + type: 2, + title: '鍒嗘瀽缁撴灉', + shade: false, + area: ['80%', '280px'], + offset: 'b', + skin: 'other-class', + content: '/SmartEarthSDK/Workers/analysis/AnalysisDXPM.html', + end: () => { + this.dxpmIndex && this.clear('4'); + }, + }); + } else { + //鍓栭潰 + window.AnalysisDXPM && window.AnalysisDXPM.deleteObject(); + } + } + ); + }, + addAnalysisFlood() { + var method = { + pointSelect: true, + spood: 20, + GroupID: 0, + url: '/SmartEarthSDK/Workers/image/waterNormals.jpg', + }; + window.AnalysisFlood = sgworld.Command.execute( + 2, + 2, + method, + (value) => {} + ); + }, + }, + mounted() { + this.measureData = new Map(); + this.colorAll = { + point: Cesium.Color.fromCssColorString('#ff0000'), + polyline: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6), + polygon: Cesium.Color.fromCssColorString('#ffff00').withAlpha(0.6), + }; }, }; </script> -- Gitblit v1.9.3