From 368b6c77a9516bfe76faf845dd77d92bb45c95d8 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期五, 22 九月 2023 14:12:07 +0800 Subject: [PATCH] 空间查询,地名定位修改 --- src/components/mapsdk.vue | 460 ++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 308 insertions(+), 152 deletions(-) diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue index 0b7d4b1..d0cdd48 100644 --- a/src/components/mapsdk.vue +++ b/src/components/mapsdk.vue @@ -1,10 +1,5 @@ <template> - <div - class="mapBox" - v-loading="loading" - :element-loading-text="loadingText" - element-loading-background="rgba(0, 0, 0, 0.8)" - > + <div class="mapBox"> <div id="mapdiv"> <div class="menu_Top box_divm" @@ -80,6 +75,7 @@ <el-form ref="form" :model="coordFrom" + label-width="70px" > <el-form-item label="缁忓害:"> <el-input @@ -90,7 +86,7 @@ <el-form-item label="绾害:"> <el-input v-model="coordFrom.lat" - placeholder="璇疯緭鍏ョ含搴�" + placeholder="璇疯緭鍏ョ淮搴�" ></el-input> </el-form-item> <el-form-item label="楂樺害:"> @@ -172,14 +168,17 @@ > <el-form-item label="鍦板悕:"> <el-input + size="small" style="width: 160px" v-model="comprehensive.name" + placeholder="璇疯緭鍏ュ湴鍚�...." ></el-input> </el-form-item> <el-form-item> <el-button @click="setQueryTable" type="info" + size="small" >鏌ヨ</el-button> </el-form-item> </el-form> @@ -193,6 +192,7 @@ align="center" type="index" label="搴忓彿" + width="70" /> <el-table-column prop="name" @@ -312,7 +312,9 @@ </div> <!-- <div style="display: flex;">--> <div - style=" position: absolute; + class="changeTerrain" + @click="changeTerrainLayer" + style=" position: absolute; bottom: 84px; right: 46px; height: 30px; @@ -323,7 +325,6 @@ align-items: center; cursor: pointer; border: 1px solid rgba(255, 255, 255, 0.5);" - @click="changeTerrainLayer" > <div title="鍦板舰鍒囨崲" @@ -334,7 +335,8 @@ <!-- class="center CenDiv"--> <div @click="changeMenulayer" - style=" position: absolute; + class="changeLayer" + style=" position: absolute; bottom: 116px; right: 46px; height: 30px; @@ -355,6 +357,7 @@ <div @click="changeMapType" + class="changeMapType" style=" position: absolute; bottom: 52px; right: 46px; @@ -480,6 +483,13 @@ <span>灞炴�т俊鎭�</span> <div style="float: right; cursor: pointer"> <el-link + v-if="$store.state.surfaceDeForm.flag && this.$store.state.surfaceDeForm.gid" + type="primary" + :underline="false" + @click="setSurfaceDeForm" + style="margin-right: 10px" + >鍦拌〃褰㈠彉鏃跺簭鍥�</el-link> + <el-link v-if="$store.state.propertiesName.enName == 's_surveyworksite'" type="primary" :underline="false" @@ -583,7 +593,7 @@ v-model="valueX" ></el-slider> <span>宸﹀彸鎴潰</span> - </div> + </div>SpatialQuery <div class="slide-bg"> <el-slider class="slide" @@ -605,7 +615,33 @@ <span>涓婁笅鎴潰</span> </div> </div> + <!-- 鍦拌〃褰㈠彉鏃跺簭鍥� --> + <div + class="surfaceDeFormPop" + style=" width: 800px; + height: 800px;" + v-show="surfaceDeFormFlag" + v-drag + > + <el-card class="box-card"> + <div slot="header"> + <span>鍦拌〃褰㈠彉鏃跺簭鍥�</span> + <div style="float: right; cursor: pointer"> + <i + class="el-icon-close" + @click="closeBufferBox(7)" + ></i> + </div> + </div> + <div + id="surfaceDeFormEchart" + class="pointInfoBoxContext" + style="height:500px;width:750px;" + > + </div> + </el-card> + </div> <!--闄勪欢鍒楄〃寮圭獥--> <el-dialog title="闄勪欢鍒楄〃" @@ -689,6 +725,7 @@ </div> </el-dialog> + <el-dialog title="鐡︾墖涓嬭浇" :append-to-body="false" @@ -741,7 +778,6 @@ placeholder="纭瀵嗙爜..." ></el-input> </el-form-item> - <el-form-item> <el-button type="primary" @@ -755,19 +791,9 @@ </el-form-item> </el-form> </el-dialog> - <!-- <div--> - <!-- @click="changeMenulayer"--> - <!-- class="center CenDiv"--> - <!-- :class="{ center1: centerFlag }"--> - <!-- >--> - <!-- <div--> - <!-- id="cenBg"--> - <!-- v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"--> - <!-- ></div>--> - <!-- </div>--> - </div> - <model-property ref='modelProperty'></model-property> + + <surface-chart ref="surfaceChart" /> <iframe id="downFrame" src="" @@ -780,24 +806,26 @@ import $ from "jquery"; import mapMenuTop from "./MapView/mapMenuTop.vue"; import mapSpaceTop from "./MapView/mapSpaceTop.vue"; -import ModelProperty from '../views/Tools/ModelProperty.vue' +import ModelProperty from '../views/Tools/ModelProperty.vue'; + import { select_Comprehensive_ByPageAndCount, select_Comprehensive_SelectWktById, comprehensive_selectRoute, dataLib_selectFiles, dataQuery_selectFields, dataQuery_selectDomains, - dataQuery_selectByPage, - comprehensive_selectPubById, comprehensive_selectModelByGuid, decr, - encr, inquiry_downloadTiles, sign_getPublicKey + dataQuery_selectByPage, sign_getPublicKey, inquiry_downloadTiles, + comprehensive_selectPubById, comprehensive_selectModelByGuid, dataQuery_selectByGid, + dataLib_selectByPage } from '../api/api' import { getToken } from '@/utils/auth' - +import * as echarts from "echarts" export default { name: "", components: { mapMenuTop, mapSpaceTop, - ModelProperty + ModelProperty, + }, data() { @@ -816,35 +844,6 @@ } } } - callback(); - } - }; - var checkAge = (rule, value, callback) => { - if (!value) { - return callback(new Error('鏁版嵁鍚嶇О涓嶈兘涓虹┖')); - } - callback(); - - }; - var validatePass = (rule, value, callback) => { - if (value === '') { - callback(new Error('璇疯緭鍏ュ瘑鐮�')); - } else { - var passwordreg = - /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{12,20}$/ - - if (!passwordreg.test(value)) { - callback(new Error("瀵嗙爜蹇呴』鐢辨暟瀛椼�佸瓧姣嶃�佺壒娈婂瓧绗︾粍鍚�,璇疯緭鍏�13-20浣�")) - } - callback(); - } - }; - var validatePass2 = (rule, value, callback) => { - if (value === '') { - callback(new Error('璇峰啀娆¤緭鍏ュ瘑鐮�')); - } else if (value !== this.ruleForm.pass) { - callback(new Error('涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!')); - } else { callback(); } }; @@ -877,15 +876,6 @@ message: "鍧愭爣鐐圭粡绾害閿欒,鍧愭爣搴斿湪[116.xxx, 39.yyy]鑼冨洿", }, ], - pass: [ - { validator: validatePass, trigger: 'blur' } - ], - checkPass: [ - { validator: validatePass2, trigger: 'blur' } - ], - title: [ - { validator: checkAge, trigger: 'blur' } - ] }, bufFrom: { val: 50, @@ -948,6 +938,8 @@ }, loadingText: '', loading: false, + surfaceDeFormFlag: false, + option: null }; }, mounted() { @@ -973,39 +965,201 @@ } }); //妯″瀷鎹曟崏 - this.catchmodel() + this.catchmodel(); this.$bus.$on("titleDown", res => { this.setDownLoadTitle(res); + }); + this.$bus.$on('annexDownload', res => { + this.setAnnexDownload(res); }) window.localStorage.setItem('slider_x', this.valueX); window.localStorage.setItem('slider_y', this.valueY); window.localStorage.setItem('slider_z', this.valueZ); }, methods: { + async setSurfaceDeForm() { + var gid = this.$store.state.surfaceDeForm.gid; + const data = await dataQuery_selectByGid({ gid: gid, name: 'msurfacedeformationdata' }); + if (data.code != 200) { + return this.$message.error("鏍规嵁GID鏌ヨ鏁版嵁澶辫触"); + } + + + this.getSurfaceDeFormData(data.result) + + }, + async getSurfaceDeFormData(result) { + var data = await dataLib_selectByPage({ + filter: "defpointno = '" + result.defpointno + "'", + name: 'msurfacedeformationdata', + pageIndex: 1, + pageSize: 100000, + }); + + const data1 = await dataLib_selectByPage({ + filter: "defpointno = '" + result.defpointno + "'", + name: 'msurfacedeformationdatadate', + pageIndex: 1, + pageSize: 100000, + }); + + if (data1.code != 200 || data.code != 200) { + return this.$message.error("鍦拌〃褰㈠彉鏁版嵁鏌ヨ澶辫触"); + } + + this.surfaceDeFormFlag = true; + var average = data.result; + var val = data1.result + var xtitle = []; + var val1 = []; + var val2 = []; + for (var i in val) { + val1.push(average[0].seqvar); + xtitle.push(this.formDate(val[i].defdate)) + val2.push(val[i].seqvar) + } + this.showSurfaceDeFormEchart(xtitle, val1, val2); + + }, + formDate(res) { + var time = new Date(res); + var y = time.getFullYear(); + var m = time.getMonth() + 1; + var d = time.getDate(); + + return ( + y + + '-' + + this.add0(m) + + '-' + + this.add0(d) + + ); + }, + //鏍煎紡鍖栨椂闂� + add0(m) { + return m < 10 ? '0' + m : m; + }, + showSurfaceDeFormEchart(res, res1, res2) { + + + var dom = document.getElementById('surfaceDeFormEchart'); + // var myChart = echarts.init(chartDom); + if (this.option != null) { + dom.removeAttribute("_echarts_instance_"); // 绉婚櫎瀹瑰櫒涓婄殑 _echarts_instance + } + + var myChart = echarts.init(dom, null, { + renderer: "canvas", + useDirtyRect: false, + }); + + + this.option = { + + tooltip: { + trigger: 'axis', + formatter: function (params) { + return params[0].axisValue + + '<br/>鏃跺簭褰㈠彉閲忥細' + params[1].data + ' mm' + + '<br/>骞村舰鍙橀�熺巼锛�' + params[0].data + ' m/a' + }, + }, + dataZoom: [{ + type: 'inside', //1骞崇Щ 缂╂斁 + + }], + grid: { + left: '1%', + right: '1%', + bottom: '1%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + }, + + }, + + xAxis: { + type: 'category', + boundaryGap: false, + data: res.reverse() + }, + yAxis: { + type: 'value', + name: "mm", + }, + series: [ + { + name: '骞村舰鍙橀�熺巼', + type: 'line', + stack: 'Total', + data: res1 + }, + { + name: '鏃跺簭鍙樺舰閲�', + type: 'line', + stack: 'Total', + data: res2.reverse() + } + ] + }; + + this.option && myChart.setOption(this.option); + window.addEventListener("resize", myChart.resize); + }, + async setAnnexDownload(rs) { + + var type, eventid; + if (rs.serveType == 'TMS') { + type = 'DOM'; + eventid = 'dom_' + rs.id; + } else if (rs.serveType == 'DEM') { + type = 'DEM'; + eventid = 'dem_' + rs.id + } + + var obj = { + eventid: eventid, + tabName: type, + }; + const res = await dataLib_selectFiles(obj); + + if (res.code != 200) { + this.$message.error('闄勪欢鏌ヨ澶辫触'); + return + } + if (res.result.length <= 0) { + this.$message('鏆傛棤闄勪欢'); + return + } + + this.attachList = res.result; + this.showAttach = true; + }, setDownLoadTitle(res) { this.signGetPublicKey() this.downTitleFlag = true; this.downTitleData = res; - }, async signGetPublicKey() { const res = await sign_getPublicKey() if (res && res.code == 200) { - window.encrypt = new JSEncrypt() - encrypt.setPublicKey(res.result) + window.encrypt = new JSEncrypt(); + encrypt.setPublicKey(res.result); } }, submitTitleDown(formName) { this.$refs[formName].validate((valid) => { if (valid) { - this.downTitleData.title = this.ruleForm.title // this.downTitleData.pwd = encr(this.ruleForm.pass) this.downTitleData.pwd = encrypt.encrypt(this.ruleForm.pass) this.getDownLoadTile(this.downTitleData); this.cannelTitleDown(); } else { - console.log('error submit!!'); return false; } @@ -1046,13 +1200,12 @@ window.pickedColor; window.modeCatchHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); window.modeCatchHandler.setInputAction((event) => { - if (window.pickedColor) { - window.pickedFeature && (window.pickedFeature.color = window.pickedColor); - } + if (window.pickedColor) { window.pickedFeature && (window.pickedFeature.color = window.pickedColor); } + // window.pickedFeature && (window.pickedFeature.color = window.pickedColor); window.pickedFeature = sgworld.Viewer.scene.pick(event.position); if (Cesium.defined(window.pickedFeature)) { if (window.pickedFeature.primitive instanceof Cesium.Cesium3DTileset) { - if (window.pickedFeature && window.pickedFeature.getProperty) { + if (window.pickedFeature) { window.pickedColor = window.pickedFeature.color window.pickedFeature.color = Cesium.Color.RED.withAlpha(0.3); @@ -1065,25 +1218,34 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) }, async setModelInfoData(result) { - var modelKey = 'id' - if (result.tileset.pubid > 0) { - const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) - if (data.code != 200) { - return + var modelKey = 'id'; + var modelid; + if (result.tileset) { + if (result.tileset.pubid && parseInt(result.tileset.pubid) > 0) { + + const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) + if (data.code != 200) { + return + } else { + + modelKey = JSON.parse(data.result.json).modelid + } + if (!modelKey) { + return this.$message('娌℃湁妯″瀷涓婚敭ID,鏃犳硶鏌ヨ鏁版嵁'); + } + modelid = pickedFeature.getProperty(modelKey); + } - if (!JSON.parse(data.result.json)) { - return this.$message('娌℃湁鏁版嵁,鏃犳硶鑾峰彇涓婚敭ID'); - } - modelKey = JSON.parse(data.result.json).modelid - if (!modelKey) { - return this.$message('娌℃湁妯″瀷涓婚敭ID,鏃犳硶鏌ヨ鏁版嵁'); - } + } else { + modelid = '3dml' + result.primitive.id; } var that = this - + if (!modelid) { + modelid = "noAuto_" + pickedFeature.primitive.layerId; + } var obj = { layerid: pickedFeature.primitive.layerId, - modelid: pickedFeature.getProperty(modelKey) + modelid: modelid } const data1 = await comprehensive_selectModelByGuid(obj); @@ -1101,7 +1263,7 @@ } that.$store.state.catModelInfo = { - id: pickedFeature.getProperty(modelKey), + id: modelid, name: name, type: type, bak: bak, @@ -1109,10 +1271,7 @@ layerName: pickedFeature.primitive.id }; that.$refs && that.$refs.modelProperty && that.$refs.modelProperty.open(); - }, - - drawTerrainLevel() { this.clearTerrainLevel() var deep = parseFloat(this.terrainFrom.height) @@ -1142,12 +1301,20 @@ licenseServer: window.sceneConfig.licenseServer, }); - - window.Viewer = window.sgworld._Viewer; - if (is_production) { Viewer.imageryLayers.removeAll(); + var base_ulr = window.sceneConfig.baseUrl; + if (base_ulr.indexOf('{host}') > -1) { + base_ulr = base_ulr.replace("{host}", iisHost) + } + Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: base_ulr, + maximumLevel: 5 + }) + ); + } //瀹氫綅 // sgworld.Navigate.jumpTo({ @@ -1179,11 +1346,12 @@ // sgworld.Analysis.depthTestAgainstTerrain(true) Viewer.scene.globe.depthTestAgainstTerrain = true; if (is_production) { + var base_ulr = window.sceneConfig.baseUrl; if (base_ulr.indexOf('{host}') > -1) { base_ulr = base_ulr.replace("{host}", iisHost) } - Viewer.imageryLayers.addImageryProvider( + window.TileMapLayer = Viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url: base_ulr, maximumLevel: 9 @@ -1196,43 +1364,39 @@ ); } - - var option = { url: window.sceneConfig.SGUrl, layerName: window.sceneConfig.mptName, requestVertexNormals: true, }; window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); - + window.terrainFlag = 'MPT' window.elevationTool = new SmartEarth.ElevationTool(window.sgworld); elevationTool.setContourColor("#F1D487"); - - }, //dem鍒囨崲 changeTerrainLayer() { if (this.terrainflag) { Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); - window.terrainDemLayer = null; var option = { url: window.sceneConfig.SGUrl, layerName: window.sceneConfig.mptName, requestVertexNormals: true, }; - window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000), }); } else { - window.terrainMptLayer.deleteObject(); - window.terrainMptLayer = null; + window.terrainLayer.deleteObject(); + window.terrainLayer = null; - window.terrainDemLayer = new Cesium.CesiumTerrainProvider({ - url: LFData + '/3d/terrain/dem20230321' + window.terrainLayer = new Cesium.CesiumTerrainProvider({ + // url: LFData + '/3d/terrain/dem20230321' + url: demLayer }); - Viewer.terrainProvider = window.terrainDemLayer + Viewer.terrainProvider = window.terrainLayer Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(113.229279, 31.215949, 1000), orientation: { @@ -1241,7 +1405,6 @@ roll: 0.0 } }); - } this.terrainflag = !this.terrainflag }, @@ -1406,17 +1569,27 @@ this.$store.state.propertiesFlag = null; this.showAttribute = false; break; + case 7: + this.surfaceDeFormFlag = false; + break; } }, //瀹氫綅 setCoordLocal() { - var lon = parseFloat(this.coordFrom.lon); - var lat = parseFloat(this.coordFrom.lat); - var height = parseFloat(this.coordFrom.height); + if (!this.coordFrom.lon) { + return this.$message('璇疯緭鍏ョ粡搴�'); + } + if (!this.coordFrom.lat) { + return this.$message('璇疯緭鍏ョ含搴�'); + } + var lon = parseFloat(this.coordFrom.lon) + var lat = parseFloat(this.coordFrom.lat) + var height = parseFloat(this.coordFrom.height) == NaN ? parseFloat(this.coordFrom.height) : 100; + var position = { X: lon, Y: lat, - Altitude: 2000, + Altitude: height, }; if (this.imagePoint != null) { sgworld.Creator.DeleteObject(this.imagePoint); @@ -1914,7 +2087,7 @@ } if (!data.result.length) { - this.$message.error("鏈煡璇㈠埌鍕樻帰淇℃伅鏁版嵁"); + this.$message("鏈煡璇㈠埌鍕樻帰淇℃伅鏁版嵁"); return } this.showAttribute = !this.showAttribute; @@ -1985,11 +2158,26 @@ z-index: 40; position: absolute; right: 8%; - bottom: 10%; + bottom: 1%; + span { + width: 100px; + } } .propertiesPop { width: 350px; height: 370px; + z-index: 40; + position: absolute; + right: 8%; + bottom: 1%; + /deep/ .el-card__header { + padding: 10px 20px; + } + /deep/ .el-card__body { + padding: 10px 20px; + } + } + .surfaceDeFormPop { z-index: 40; position: absolute; right: 8%; @@ -2213,6 +2401,7 @@ background-repeat: no-repeat; background-size: contain; } + //.changeMapType { // position: absolute; // bottom: 1%; @@ -2230,43 +2419,10 @@ // cursor: pointer; //} .changeTerrain { - position: absolute; - bottom: 84px; - right: 46px; - height: 30px; - width: 30px; - z-index: 101; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - border: 1px solid rgba(255, 255, 255, 0.5); } .changeLayer { - position: absolute; - bottom: 116px; - right: 46px; - height: 30px; - width: 30px; - z-index: 101; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - border: 1px solid rgba(255, 255, 255, 0.5); } .changeMapType { - position: absolute; - bottom: 52px; - right: 46px; - height: 30px; - width: 30px; - z-index: 101; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - border: 1px solid rgba(255, 255, 255, 0.5); } //.changeTerrain { // position: absolute; -- Gitblit v1.9.3