From 04dae190af26730e8e0dcfb7cb4ec066400422f3 Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期一, 14 八月 2023 16:43:25 +0800 Subject: [PATCH] 生产环境加载高德地图显示空白修改 --- src/components/preview_map.vue | 647 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 479 insertions(+), 168 deletions(-) diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue index c2a5c09..2060f0b 100644 --- a/src/components/preview_map.vue +++ b/src/components/preview_map.vue @@ -1,4 +1,3 @@ - <template> <div id="mapdiv" @@ -27,6 +26,7 @@ :props="defaultProps" @node-click="handleNodeClick" @check="handleCheckChange" + @node-contextmenu="rightClick" > </el-tree> </div> @@ -43,107 +43,121 @@ <el-form-item> <el-button size="small" + v-if="$store.state.previewLayer.type == 'mpt'" + @click="setcropping" + >瑁佸壀</el-button> + <el-button + size="small" + v-if="$store.state.previewLayer.type != 'mpt'" @click="locateTo" >瀹氫綅</el-button> <el-button size="small" + v-if="$store.state.previewLayer.type != 'mpt'" @click="showTileset" >鏄鹃殣</el-button> <el-button size="small" - @click="underground" + v-if="$store.state.previewLayer.type != 'mpt'" + @click="setUndergroundMode" >鍦颁笅</el-button> <el-button + v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' && + $store.state.previewLayer.type != 'mpt'" size="small" @click="pickupCoords" >鎷惧彇</el-button> <el-button + v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' && + $store.state.previewLayer.type != 'mpt'" size="small" @click="reload" > 閲嶈浇 </el-button> <el-button - v-if="modelForm.modelid == null" + v-if="modelForm.modelid == null && $store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' && + $store.state.previewLayer.type != 'mpt'" size="small" @click="getModeKeyId" >妯″瀷涓婚敭</el-button> <el-button + v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' + " size="small" @click="resave" >淇濆瓨</el-button> </el-form-item> - <el-form-item label="缁忓害:"> + <el-form-item + label="缁忓害:" + v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' && + $store.state.previewLayer.type != 'mpt'" + > <el-input size="small" v-model="modelForm.lon" - @input="update" ></el-input> - <el-slider - v-model="modelForm.lon" - @input="update" - :min="73" - :step="0.001" - :max="135" - ></el-slider> + </el-form-item> - <el-form-item label="绾害:"> + <el-form-item + label="绾害:" + v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' && + $store.state.previewLayer.type != 'mpt'" + > <el-input size="small" v-model="modelForm.lat" - @input="update" ></el-input> - <el-slider - v-model="modelForm.lat" - @input="update" - :min="3" - :step="0.001" - :max="54" - ></el-slider> + </el-form-item> - <el-form-item label="楂樺害:"> + <el-form-item + label="楂樺害:" + v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' && + $store.state.previewLayer.type != 'mpt'" + > <el-input size="small" v-model="modelForm.height" - @input="update" ></el-input> - <el-slider - v-model="modelForm.height" - :min="-800" - :step="1" - @input="update" - :max="8800" - ></el-slider> + </el-form-item> - <el-form-item label="瑙掑害:"> + <el-form-item + label="瑙掑害:" + v-if="$store.state.previewLayer.type != '3dml' && + $store.state.previewLayer.type != 'cpt' && + $store.state.previewLayer.type != 'mpt'" + > <el-input size="small" v-model="modelForm.yaw" - @input="update" ></el-input> - <el-slider - v-model="modelForm.yaw" - :min="0" - @input="update" - :step="0.1" - :max="360" - ></el-slider> + </el-form-item> - <el-form-item label="閫忔槑搴�:"> + <el-form-item + label="姣斾緥:" + v-if="$store.state.previewLayer.type == 'las'" + > + <el-input + size="small" + v-model="modelForm.scale" + ></el-input> + + </el-form-item> + <!-- <el-form-item label="閫忔槑搴�:"> <el-input size="small" v-model="modelForm.alpha" - @input="update" ></el-input> - <el-slider - v-model="modelForm.alpha" - @input="update" - :min="0" - :step="0.01" - :max="1" - ></el-slider> - </el-form-item> + + </el-form-item> --> </el-form> </div> @@ -164,6 +178,7 @@ <el-tab-pane label="灞炴��" name="first" + v-if="serveType" > <el-form ref="form" @@ -202,14 +217,16 @@ plain size="small" @click="InsertData" - >{{$t('common.increase')}}</el-button> + >{{ + $t('common.increase') }}</el-button> <el-button v-show="!isShowModel" type="info" plain size="small" @click="EditData" - >{{$t('common.update')}}</el-button> + >{{ $t('common.update') + }}</el-button> </el-form-item> </el-form> @@ -235,10 +252,10 @@ id="insertFile" multiple="multiple" style="display: none" - @change="insertFile( )" + @change="insertFile()" /> <el-link - @click="getInsertFile( )" + @click="getInsertFile()" :underline="false" ><i class="el-icon-folder-opened"></i></el-link> </el-form-item> @@ -249,14 +266,15 @@ class="elLink" :underline="false" @click="setAttachInsert" - >{{$t('common.append')}}</el-link> + >{{ $t('common.append') + }}</el-link> </el-col> <el-col :span="3"> <el-link class="elLink" :underline="false" @click="setAttachDel" - >{{$t('common.delete')}}</el-link> + >{{ $t('common.delete') }}</el-link> </el-col> </el-row> @@ -381,14 +399,27 @@ type="primary" size="small" @click="setSureKeyModelKey" - >{{$t('common.confirm')}}</el-button> + >{{ $t('common.confirm') }}</el-button> </el-form-item> </el-form> </div> <undergroundModel ref="undergroundModel" /> + <el-card + class="box-card" + ref="card" + :style="{ ...rightClickMenuStyle }" + v-show="menuVisible" + > + <div + class="edit" + @click="setShowFile" + > + <i class="el-icon-tickets"></i> 闄勪欢 + </div> + </el-card> </div> </template> - + <script> import { perms_selectLayers, @@ -398,7 +429,8 @@ comprehensive_selectFiles, dataQuery_deletes, publish_update, - comprehensive_selectPubById + comprehensive_selectPubById, + resSelectCountForRole } from '../api/api.js'; import { getToken } from '@/utils/auth'; import undergroundModel from '../views/Tools/undergroundModel.vue' @@ -432,7 +464,8 @@ info: '', icon: '', bak: '', - Id: '' + Id: '', + }, options: [ { @@ -465,7 +498,7 @@ isJpg: false, src: '' }, - modelType: ['ifc', 'fbx', 'rvt', '3dml'], + modelType: ['ifc', 'fbx', 'rvt', '3dml', 'cpt', 'osgb', 'las', 'laz'], editModelFlag: false, modelForm: { lon: 119, @@ -474,6 +507,11 @@ yaw: 0, alpha: 1, modelid: null, + west: null, + south: null, + east: null, + north: null, + scale: 1 }, app: { tileset: null, @@ -484,12 +522,68 @@ modelLayerId: null, optionKey: [], modelKeyFlag: false, + menuVisible: false, + rightClickMenuStyle: {}, // 鍙抽敭鑿滃崟鏍峰紡 + serveType: true, + layerData: "lf.sys_style" } }, mounted() { this.init3DMap(); }, methods: { + // 榧犳爣鍙冲嚮浜嬩欢 + rightClick(event, object, node, element) { + if (object.type == 1 || node.data.children != null) return; + if (object.serveType != "TMS" && object.serveType != "DEM") return + + this.menuVisible = true + var type; + if (object.serveType == "TMS") { + type = 'dom_' + this.layerData = "DOM" + } else if (object.serveType == "DEM") { + type = 'dem_' + this.layerData = "DEM" + } + this.serveType = false + this.activeName = 'second' + this.formInline.Id = type + object.id; + this.layerID = type + object.id; + this.$refs.card.$el.style.left = event.pageX + 20 + "px"; + this.$refs.card.$el.style.top = event.pageY + "px"; + + }, + setShowFile() { + + this.dialogVisible = true; + this.getAttacthFlieList(); + this.menuVisible = false + }, + //瑁佸壀 + setcropping() { + var that = this; + sgworld.Creator.SimpleGraphic.clear() + sgworld.Creator.SimpleGraphic.edit(false, { editProp: false }); + sgworld.Creator.createSimpleGraphic( + "rectangle", {}, + function (entity) { + that.modelForm.east = Cesium.Math.toDegrees( + entity.rectangle.coordinates.getValue().east + ); + that.modelForm.north = Cesium.Math.toDegrees( + entity.rectangle.coordinates.getValue().north + ); + that.modelForm.west = Cesium.Math.toDegrees( + entity.rectangle.coordinates.getValue().west + ); + that.modelForm.south = Cesium.Math.toDegrees( + entity.rectangle.coordinates.getValue().south + ); + + } + ); + }, setUndergroundMode() { if (window.UndergroundMode) { this.$refs && @@ -561,7 +655,7 @@ } - $.ajax(BASE_URL + "/comprehensive/uploadFiles?token=" + token + "&tabName=lf.sys_style&eventid=" + this.layerID, + $.ajax(BASE_URL + "/comprehensive/uploadFiles?token=" + token + "&tabName=" + this.layerData + "&eventid=" + this.layerID, { type: "post", data: formData, @@ -638,7 +732,7 @@ async getAttacthFlieList() { var obj = { eventid: this.layerID, - tabName: "lf.sys_style" + tabName: this.layerData }; const res = await comprehensive_selectFiles(obj); if (res.code != 200) { @@ -702,6 +796,8 @@ }, handleClose() { + this.layerData = "lf.sys_style" + this.serveType = true; this.dialogVisible = false; this.formInline = { title: '', @@ -719,26 +815,39 @@ async setShowModelInfo(result) { var modelKey = 'id'; - if (result.tileset.pubid > 0) { - const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) - if (data.code != 200) { - return - } else { + if (result.tileset) { + if (result.tileset.pubid && parseInt(result.tileset.pubid) > 0) { + const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) - modelKey = JSON.parse(data.result.json).modelid + if (data.code != 200) { + return + } else { + modelKey = JSON.parse(data.result.json).modelid + } + if (!modelKey) { + return this.$message('娌℃湁妯″瀷涓婚敭ID,鏃犳硶鏌ヨ鏁版嵁'); + } + this.formInline.Id = result.getProperty(modelKey); + this.layerID = result.getProperty(modelKey); + } - if (!modelKey) { - return this.$message('娌℃湁妯″瀷涓婚敭ID,鏃犳硶鏌ヨ鏁版嵁'); - } + } else { + var id = '3dml' + result.primitive.id; + this.formInline.Id = id; + this.layerID = id; } - - - // this.formInline.title = result.getProperty("name") - this.formInline.Id = result.getProperty(modelKey); - this.layerID = result.getProperty(modelKey); this.formInline.layerId = result.primitive.layerId; this.formInline.layerName = result.primitive.id; + + // this.formInline.title = result.getProperty("name") + if (!this.formInline.Id) { + this.formInline.Id = "noAuto_" + this.formInline.layerId; + } + if (!this.layerID) { + this.layerID = "noAuto_" + this.formInline.layerId; + } + this.startModelData(); this.dialogVisible = true; @@ -752,19 +861,27 @@ if (data.code != 200) { return; } - if (data.result == null) { this.isShowModel = true; this.formInline.name = this.formInline.title; } else { this.isShowModel = false; this.formInline = data.result; - this.formInline.title = this.formInline.name; - } }, - setChangeTileset(result) { + setChangeTileset(result, check) { + + var nodes = this.$refs.tree.getCheckedNodes(); + var str = []; + for (var i = 0; i < nodes.length; i++) { + var node = this.$refs.tree.getNode(nodes[i]).data.serveType; + if (node != 'DEM') { + str.push(nodes[i]) + } + } + str.push(result[0].id) + this.$refs.tree.setCheckedKeys(str) var value = this.$refs.tree.getCheckedNodes(); var std = []; for (var i in value) { @@ -775,27 +892,53 @@ if (std.indexOf(tile.id) != -1) { this.setAddLayers(tile) } else { - for (var j in Viewer.scene.primitives._primitives) { - if (Viewer.scene.primitives._primitives[j].id == tile.cnName) { - Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) + if (tile.serveType == 'DEM') { + + if (window.terrainFlag == '2') { + window.terrainLayer.deleteObject(); + } else if (window.terrainFlag == '1') { + Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); + } + + // + var option = { + url: window.sceneConfig.SGUrl, + layerName: window.sceneConfig.mptName, + requestVertexNormals: true, + }; + window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + } else if (tile.serveType == 'TMS') { + for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { + if (window.Viewer.imageryLayers._layers[i].name == result.cnName) { + window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers._layers[i]); + break; + } + } + } else { + for (var j in Viewer.scene.primitives._primitives) { + if (Viewer.scene.primitives._primitives[j].id == tile.cnName) { + Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) + } } } } } }, - setAddLayers(res) { - if (res.serveType == "Tileset") { + setAddLayers(rs) { + + if (rs.serveType == "Tileset" || rs.serveType == "3DML") { var url; - if (res.url.indexOf("{host}") != -1) { - url = res.url.replace("{host}", iisHost); + if (rs.url.indexOf("{host}") != -1) { + url = rs.url.replace("{host}", iisHost); } else { - url = modelUrl + "/" + res.url + url = modelUrl + "/" + rs.url } + var tileset = Viewer.scene.primitives.add( new Cesium.Cesium3DTileset({ - name: res.cnName, + name: rs.cnName, url: url, //192.168.20.106,to4 - maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16 + maximumScreenSpaceError: url.indexOf("/pnts/") > -1 ? 16 : 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16 maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512 dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false @@ -803,26 +946,68 @@ ); var that = this; tileset.readyPromise.then((tileset) => { - tileset.id = res.cnName; - tileset.layerId = res.id; - tileset.pubid = res.pubid; - that.getArgsTileset(tileset, res); + tileset.id = rs.cnName; + tileset.layerId = rs.id; + tileset.pubid = rs.pubid; + if (rs.serveType != '3DML') { + that.getArgsTileset(tileset, rs); + } + }); + } else if (rs.serveType == "DEM") { + + if (window.terrainFlag == '2') { + window.terrainLayer.deleteObject(); + } else if (window.terrainFlag == '1') { + Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); + + } + var url = rs.url; + if (rs.url.indexOf("{host}") != -1) { + url = rs.url.replace("{host}", iisHost); + } + window.terrainLayer = null; + window.terrainFlag = '1' + + window.terrainLayer = new Cesium.CesiumTerrainProvider({ + url: url + }); + Viewer.terrainProvider = window.terrainLayer + } else if (rs.serveType == "TMS") { + var url = rs.url; + if (rs.url.indexOf("{host}") != -1) { + url = rs.url.replace("{host}", iisHost); + } + var layer = Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: url, + maximumLevel: 18, + }) + ); + layer.name = rs.cnName; } }, - async getArgsTileset(tileset, res) { + async getArgsTileset(tileset, rs) { - if (res.pubid > 0) { - const data = await comprehensive_selectPubById({ id: res.pubid }) + if (rs.pubid > 0) { + + const data = await comprehensive_selectPubById({ id: rs.pubid }) if (data.code != 200) { } else { - this.reloadTile(tileset, data.result.json) + + if (rs.serveType == '3DML') { + this.tileSet(tileset, parseFloat(rs.elev)) + } else { + this.reloadTile(tileset, data.result.json) + } + + } } else { - this.tileSet(tileset, parseFloat(res.elev)) + this.tileSet(tileset, parseFloat(rs.elev)) } }, @@ -838,7 +1023,7 @@ var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); //淇敼妯″瀷鐭╅樀 tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); - Viewer.flyTo(tileset); + // Viewer.flyTo(tileset); }, reloadTile(tileset, res) { var vm = JSON.parse(res) @@ -861,13 +1046,31 @@ } }, handleNodeClick(data) { + this.menuVisible = false if (data.type == 2) { this.currentData = data; - for (var j in Viewer.scene.primitives._primitives) { - if (Viewer.scene.primitives._primitives[j].id == data.cnName) { - Viewer.flyTo(Viewer.scene.primitives._primitives[j]); + + if (data.serveType == 'DEM' || data.serveType == 'TMS') { + if (!data.pubid) return + + this.setQueryPubid(data) + } else { + for (var j in Viewer.scene.primitives._primitives) { + if (Viewer.scene.primitives._primitives[j].id == data.cnName) { + Viewer.flyTo(Viewer.scene.primitives._primitives[j]); + } } } + } + }, + async setQueryPubid(res) { + const data = await comprehensive_selectPubById({ id: res.pubid }) + if (data.code != 200) return; + if (data.result.geom) { + var wkt = this.$wkt.parse(data.result.geom); + Viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000), + }); } }, getchilds(source) { @@ -893,6 +1096,10 @@ // Viewer.camera.flyTo({ // destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000), // }); + + if (is_production) { + Viewer.imageryLayers.removeAll(); + } Viewer._enableInfoOrSelection = false; //鏄剧ずfps Viewer.scene.debugShowFramesPerSecond = false; @@ -902,6 +1109,32 @@ // window.sgworld.navControl("scale", false); //寮�鍚繁搴︽娴� // sg.Analysis.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( + new Cesium.UrlTemplateImageryProvider({ + url: base_ulr, + maximumLevel: 5 + }) + ); + + window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: base_ulr, + + }) + ); + + + } + + + + Viewer.scene.globe.depthTestAgainstTerrain = true; // window.elevationTool = new SmartEarth.ElevationTool(window.sg); // elevationTool.setContourColor("#F1D487"); @@ -911,29 +1144,41 @@ requestVertexNormals: true, }; window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + window.terrainFlag = '2' + // window.terrainLayer = new Cesium.CesiumTerrainProvider({ + // url: demLayer + // }); - + // Viewer.terrainProvider = window.terrainLayer if (this.$store.state.previewLayer) { var res = this.$store.state.previewLayer; var type = res.type; + res.ulr = res.url.replace("{host}", iisHost); if (type == 'DEM') { window.terrainLayer.deleteObject(); + // Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); + // window.terrainLayer = null; window.terrainLayer = null; window.terrainLayer = new Cesium.CesiumTerrainProvider({ url: res.url }); Viewer.terrainProvider = window.terrainLayer - Viewer.camera.flyTo({ + /*Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(113.229279, 31.215949, 1000), orientation: { heading: 6.08434611923462, pitch: Cesium.Math.toRadians(-45.0), roll: 0.0 } - }); + });*/ - } else if (res.url.indexOf('.png') != -1) { + var wkt = this.$wkt.parse(res.geom); + var height = this.getHeight(wkt.coordinates[2]); + Viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), + }); + } else if (type == 'DOM') { var wkt = this.$wkt.parse(res.geom); var height = this.getHeight(wkt.coordinates[2]) window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider( @@ -945,22 +1190,44 @@ Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), }); - } else if (type == '3dml') { + } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt' + || type == 'cpt' || type == 'osgb' || type == 'las' || type == 'laz') { if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset); + this.app.tileset = this.createTileset(res); var that = this; + this.editModelFlag = true; Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) { + that.setModleLocatin() Viewer.flyTo(ts); }); } else if (res.url.indexOf('.mpt') != -1) { - Viewer.imageryLayers.removeAll(); - var url = res.url.split(';') - sgworld.Creator.createImageryProvider('mpt褰卞儚', "wms", { + this.editModelFlag = true; + //Viewer.imageryLayers.removeAll(); + + var url = res.url.split(';'); + var ops = { url: url[0], layers: url[1] - }, "0", undefined, true, ""); + }; + if (res && res.json) { + var rs = JSON.parse(res.json); + ops.rectangle = Cesium.Rectangle.fromDegrees(rs.west, rs.south, rs.east, rs.north); + } + + sgworld.Creator.createImageryProvider(res.cnName, "wms", ops, "0", undefined, true, ""); + + if (res && res.json) { + var rs = JSON.parse(res.json); + Viewer.camera.flyTo({ + destination: Cesium.Rectangle.fromDegrees(rs.west, rs.south, rs.east, rs.north) + }) + } + + + } else if (res.url.indexOf('menuLayer') != -1) { this.setShowModelLayer(); } @@ -976,6 +1243,9 @@ if (window.pickedFeature && window.pickedFeature.getProperty) { this.setModeLayerID(pickedFeature); + } else { + this.modelForm.modelid = 'id3dml' + window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //绉婚櫎浜嬩欢 } } } @@ -983,11 +1253,21 @@ }, async resave() { - if (!this.modelForm.modelid) { - return this.$message('鏈�夋嫨妯″瀷涓婚敭ID'); + + if (this.$store.state.previewLayer.type != "mpt") { + if (!this.modelForm.modelid) { + return this.$message('鏈�夋嫨妯″瀷涓婚敭ID'); + } + } else { + sgworld.Creator.SimpleGraphic.clear() } + this.$store.state.previewLayer.json = JSON.stringify(this.modelForm); + if (this.$store.state.previewLayer.url) { + var url = this.$store.state.previewLayer.url; + this.$store.state.previewLayer.url = url.replace(iisHost, "{host}"); + } const data = await publish_update(this.$store.state.previewLayer); if (data.code != 200) { this.$message.error('鏁版嵁淇濆瓨澶辫触'); @@ -1000,8 +1280,11 @@ this.reload(); }, reload() { + debugger + sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) var json = JSON.stringify(this.modelForm); - var url = this.$store.state.previewLayer.url; + var modelScale = this.modelForm.scale + var url = this.$store.state.previewLayer.url.replace("{host}", iisHost); if (!url) return; if (this.app.tileset) Viewer.scene.primitives.remove(this.app.tileset); @@ -1011,13 +1294,16 @@ Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) { that.modelForm = JSON.parse(json); var pos = Cesium.Cartesian3.fromDegrees(parseFloat(that.modelForm.lon), parseFloat(that.modelForm.lat), parseFloat(that.modelForm.height)); - - var converter = Cesium.Transforms.eastNorthUpToFixedFrame; var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(parseFloat(that.modelForm.yaw)), 0, 0); var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); + if (modelScale) { + var scale = Cesium.Matrix4.fromUniformScale(modelScale); + Cesium.Matrix4.multiply(matrix, scale, matrix); + } that.app.tileset._root.transform = matrix; Viewer.flyTo(ts); + that.app.isBusy = false; }); }, @@ -1044,6 +1330,8 @@ that.modelForm.lat = y; that.modelForm.height = z; that.pickupCoords(); + that.reload(); + }, Cesium.ScreenSpaceEventType.LEFT_CLICK); }, // 淇濈暀灏忔暟浣� @@ -1053,36 +1341,26 @@ return Math.round(d * p) / p; }, update() { - if (!this.modelForm.lon || isNaN(this.modelForm.lon)) { - var args = this.getEditTilesetArgs(); - this.modelForm.lon = args.lon; - return - } - if (!this.modelForm.lat || isNaN(this.modelForm.lat)) { - var args = this.getEditTilesetArgs(); - this.modelForm.lat = args.lat; - return - } - if (!this.modelForm.height || isNaN(this.modelForm.height)) { - var args = this.getEditTilesetArgs(); - this.modelForm.height = args.height; - return - } - if (!this.modelForm.yaw || isNaN(this.modelForm.yaw)) { - this.modelForm.yaw = 0; - return - } - // if (!this.modelForm.alpha || isNaN(this.modelForm.alpha)) { - - // if (this.app.under) { - // - // this.modelForm.alpha = sgworld._Analysis._UndergroundMode._alpha; - // } else { - // this.modelForm.alpha = 1 - // } + // if (!this.modelForm.lon || isNaN(this.modelForm.lon)) { + // var args = this.getEditTilesetArgs(); + // this.modelForm.lon = args.lon == null ? 0 : args.height; // return - // } + // if (!this.modelForm.lat || isNaN(this.modelForm.lat)) { + // var args = this.getEditTilesetArgs(); + // this.modelForm.lat = args.lat == null ? 0 : args.height; + // return + // } + // if (!this.modelForm.height || isNaN(this.modelForm.height)) { + // var args = this.getEditTilesetArgs(); + // this.modelForm.height = args.height == null ? 0 : args.height; + // return + // } + // if (!this.modelForm.yaw || isNaN(this.modelForm.yaw)) { + // this.modelForm.yaw = 0; + // return + // } + this.setTilesetArgs(this.modelForm); sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) }, @@ -1095,6 +1373,8 @@ var converter = Cesium.Transforms.eastNorthUpToFixedFrame; var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(parseFloat(f.yaw)), 0, 0); var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); + var scale = Cesium.Matrix4.fromUniformScale(f.scale); + Cesium.Matrix4.multiply(matrix, scale, matrix); var model = this.app.tileset model._root.transform = matrix; }, @@ -1105,6 +1385,7 @@ }, //鏄鹃殣 showTileset() { + if (!this.app.tileset) return; this.app.tileset.show = !this.app.tileset.show; }, @@ -1114,12 +1395,13 @@ Viewer.flyTo(this.app.tileset); }, createTileset(res) { + res.url = res.url.replace('{host}', iisHost) return new Cesium.Cesium3DTileset({ url: res.url, name: 'tsTest', skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false baseScreenSpaceError: 1024, - maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16锛屾暟鍊煎姞澶ц兘璁╂渶缁堟垚鍍忓彉妯$硦 + maximumScreenSpaceError: res.url.indexOf("/pnts/") > -1 ? 16 : 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16锛屾暟鍊煎姞澶ц兘璁╂渶缁堟垚鍍忓彉妯$硦 skipScreenSpaceErrorFactor: 16, skipLevels: 1, immediatelyLoadDesiredLevelOfDetail: false, @@ -1137,21 +1419,26 @@ }); }, setEditModelLayer(res) { - this.editModelFlag = true; + if (res.json) { + var json = JSON.parse(res.json) this.modelForm = json; this.reload(); } else { this.getTilesetArgs(); } - }, setModleLocatin() { var res = this.$store.state.previewLayer; var type = res.type; if (this.modelType.indexOf(type) != -1) { - this.setEditModelLayer(res) + if (type != '3dml') { + this.setEditModelLayer(res) + } else { + this.editModelFlag = true; + } + } }, @@ -1189,14 +1476,17 @@ }, getEditTilesetArgs() { this.app.isBusy = true; + var std = { + lon: 0, + lat: 0, + height: 0, + } + + if (!this.app.tileset._root) return std; var cm = this.app.tileset._root.transform; var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]); var carto = Cesium.Cartographic.fromCartesian(cartesian); - var std = { - lon: null, - lat: null, - height: null, - } + if (carto) { std.lon = Cesium.Math.toDegrees(carto.longitude).toFixed(7); @@ -1213,19 +1503,26 @@ } else { var std = data.result - var val = std.filter((str) => { - if (str.type == 1 && str.pid == 1) { - return str; + var val = []; + std.filter((str) => { + // if (str.type == 1 && str.pid == 1) { + // return str; + // } + // if (str.id == 1 && str.pid == 0) { + // return str; + // } + if (str.type == 1) { + val.push(str); } - if (str.id == 1 && str.pid == 0) { - return str; + if (str.url != null && str.type == 2) { + + if (str.serveType == 'Tileset' || str.serveType == '3DML' || str.serveType == 'TMS' || str.serveType == 'DEM') { + val.push(str); + } } - if (str.type == 1 && str.cnName == '涓夌淮鍦拌川妯″瀷' || str.cnName == '鍗曚綋妯″瀷' || str.cnName == '娲炲簱妯″瀷') { - return str; - } - if (str.url != null && str.type == 2 && str.serveType == 'Tileset') { - return str; - } + // if (str.url != null && str.type == 2 && str.serveType == '3DML') { + // + // } }); var res = this.setTreeData(val); @@ -1240,7 +1537,8 @@ pickedFeature = sgworld.Viewer.scene.pick(event.position); if (Cesium.defined(pickedFeature)) { if (pickedFeature.primitive instanceof Cesium.Cesium3DTileset) { - if (pickedFeature && pickedFeature.getProperty) { + + if (pickedFeature) { pickedColor = pickedFeature.color pickedFeature.color = Cesium.Color.RED.withAlpha(0.3); @@ -1286,11 +1584,12 @@ } </script> - + <style lang="less" scoped> .previewBox { width: 100%; height: 100%; + .modelLayer { position: absolute; z-index: 40; @@ -1300,16 +1599,19 @@ margin: 10px; max-height: 600px; overflow: auto; + .modelBox { width: 100%; min-height: 24px; } } + .pdfClass { height: 70vh; width: 100%; position: relative; } + .el-icon-sunrise { background: url("../assets/img/synthesis/images/3鐧藉簳_157.png") center center no-repeat; @@ -1320,5 +1622,14 @@ content: "11"; visibility: hidden; } + .box-card { + position: fixed; + display: block; + z-index: 10000; + padding: 0px 0px; + border: 1px solid #ebeef5; + border-radius: 4px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); + } } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3