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 | 929 +++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 630 insertions(+), 299 deletions(-) diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue index b2f8517..2060f0b 100644 --- a/src/components/preview_map.vue +++ b/src/components/preview_map.vue @@ -1,139 +1,206 @@ <template> - <div id="mapdiv" - class="previewBox"> - <div v-if="modelLayer" - class="modelLayer box_divm"> + <div + id="mapdiv" + class="previewBox" + > + <div + v-if="modelLayer" + class="modelLayer box_divm" + > <div class="modelBox"> - <div style="float:right" - :title="$t('synthesis.undergroundMode')" - @click="setUndergroundMode"> + <div + style="float:right" + :title="$t('synthesis.undergroundMode')" + @click="setUndergroundMode" + > <i class="el-icon-sunrise "></i> </div> </div> <div class="modelBox"> - <el-tree :data="treeData" - show-checkbox - node-key="id" - ref="tree" - :default-expanded-keys="[1]" - :props="defaultProps" - @node-click="handleNodeClick" - @check="handleCheckChange"> + <el-tree + :data="treeData" + show-checkbox + node-key="id" + ref="tree" + :default-expanded-keys="[1]" + :props="defaultProps" + @node-click="handleNodeClick" + @check="handleCheckChange" + @node-contextmenu="rightClick" + > </el-tree> </div> </div> - <div v-if="editModelFlag" - class="modelLayer box_divm"> - <el-form ref="form" - :model="modelForm" - label-width="80px"> + <div + v-if="editModelFlag" + class="modelLayer box_divm" + > + <el-form + ref="form" + :model="modelForm" + label-width="80px" + > <el-form-item> - <el-button size="small" - @click="locateTo">瀹氫綅</el-button> - <el-button size="small" - @click="showTileset">鏄鹃殣</el-button> - <el-button size="small" - @click="underground">鍦颁笅</el-button> - <el-button v-if="$store.state.previewLayer.type != '3dml'" - size="small" - @click="pickupCoords">鎷惧彇</el-button> - <el-button v-if="$store.state.previewLayer.type != '3dml'" - size="small" - @click="reload"> + <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" + 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 && $store.state.previewLayer.type != '3dml'" - size="small" - @click="getModeKeyId">妯″瀷涓婚敭</el-button> - <el-button v-if="$store.state.previewLayer.type != '3dml'" - size="small" - @click="resave">淇濆瓨</el-button> + <el-button + 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="缁忓害:" - v-if="$store.state.previewLayer.type != '3dml'"> - <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 + 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" + ></el-input> + </el-form-item> - <el-form-item label="绾害:" - v-if="$store.state.previewLayer.type != '3dml'"> - <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 + 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" + ></el-input> + </el-form-item> - <el-form-item label="楂樺害:" - v-if="$store.state.previewLayer.type != '3dml'"> - <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 + 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" + ></el-input> + </el-form-item> - <el-form-item label="瑙掑害:" - v-if="$store.state.previewLayer.type != '3dml'"> - <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 + 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" + ></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 + 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" + ></el-input> + + </el-form-item> --> </el-form> </div> - <el-dialog :title="formInline.title" - :visible.sync="dialogVisible" - :modal="false" - :modal-append-to-body="false" - :close-on-click-modal="false" - :before-close="handleClose" - width="30%"> + <el-dialog + :title="formInline.title" + :visible.sync="dialogVisible" + :modal="false" + :modal-append-to-body="false" + :close-on-click-modal="false" + :before-close="handleClose" + width="30%" + > <div style="height:63vh"> - <el-tabs v-model="activeName" - @tab-click="handleClick"> - <el-tab-pane label="灞炴��" - name="first"> - <el-form ref="form" - :model="formInline" - label-width="80px"> + <el-tabs + v-model="activeName" + @tab-click="handleClick" + > + <el-tab-pane + label="灞炴��" + name="first" + v-if="serveType" + > + <el-form + ref="form" + :model="formInline" + label-width="80px" + > <el-form-item :label="$t('common.name')"> <el-input v-model="formInline.name"></el-input> </el-form-item> <el-form-item :label="$t('common.type')"> - <el-select v-model="formInline.type" - style="width:100%"> - <el-option v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> + <el-select + v-model="formInline.type" + style="width:100%" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + > </el-option> </el-select> @@ -144,78 +211,113 @@ </el-form-item> <el-form-item> - <el-button v-show="isShowModel" - type="success" - plain - size="small" - @click="InsertData">{{$t('common.increase')}}</el-button> - <el-button v-show="!isShowModel" - type="info" - plain - size="small" - @click="EditData">{{$t('common.update')}}</el-button> + <el-button + v-show="isShowModel" + type="success" + plain + size="small" + @click="InsertData" + >{{ + $t('common.increase') }}</el-button> + <el-button + v-show="!isShowModel" + type="info" + plain + size="small" + @click="EditData" + >{{ $t('common.update') + }}</el-button> </el-form-item> </el-form> </el-tab-pane> - <el-tab-pane label="闄勪欢" - name="second"> - <el-form :model="fromfile" - class="demo-form-inline"> + <el-tab-pane + label="闄勪欢" + name="second" + > + <el-form + :model="fromfile" + class="demo-form-inline" + > <el-form-item> - <el-input v-model="fromfile.file" - style="width: 300px; margin-right: 20px" - :placeholder="$t('common.choose')" - disabled></el-input> - <input name="file1" - type="file" - id="insertFile" - multiple="multiple" - style="display: none" - @change="insertFile( )" /> - <el-link @click="getInsertFile( )" - :underline="false"><i class="el-icon-folder-opened"></i></el-link> + <el-input + v-model="fromfile.file" + style="width: 300px; margin-right: 20px" + :placeholder="$t('common.choose')" + disabled + ></el-input> + <input + name="file1" + type="file" + id="insertFile" + multiple="multiple" + style="display: none" + @change="insertFile()" + /> + <el-link + @click="getInsertFile()" + :underline="false" + ><i class="el-icon-folder-opened"></i></el-link> </el-form-item> <el-form-item> <el-row> <el-col :span="3"> - <el-link class="elLink" - :underline="false" - @click="setAttachInsert">{{$t('common.append')}}</el-link> + <el-link + class="elLink" + :underline="false" + @click="setAttachInsert" + >{{ $t('common.append') + }}</el-link> </el-col> <el-col :span="3"> - <el-link class="elLink" - :underline="false" - @click="setAttachDel">{{$t('common.delete')}}</el-link> + <el-link + class="elLink" + :underline="false" + @click="setAttachDel" + >{{ $t('common.delete') }}</el-link> </el-col> </el-row> </el-form-item> </el-form> - <el-table :data="tableData" - ref="filterTable" - height="calc(100% - 130px)" - border - style="width: 100%" - @selection-change="handleAttatchChange"> - <el-table-column type="selection" - width="70" /> - <el-table-column width="60" - type="index" - :label="$t('common.index')" /> - <el-table-column prop="name" - :label="$t('common.name')" /> + <el-table + :data="tableData" + ref="filterTable" + height="calc(100% - 130px)" + border + style="width: 100%" + @selection-change="handleAttatchChange" + > + <el-table-column + type="selection" + width="70" + /> + <el-table-column + width="60" + type="index" + :label="$t('common.index')" + /> + <el-table-column + prop="name" + :label="$t('common.name')" + /> - <el-table-column prop="sizes" - :label="$t('common.size')" - :formatter="statSizeChange" /> - <el-table-column align="center" - :label="$t('common.operate')" - min-width="100"> + <el-table-column + prop="sizes" + :label="$t('common.size')" + :formatter="statSizeChange" + /> + <el-table-column + align="center" + :label="$t('common.operate')" + min-width="100" + > <template slot-scope="scope"> - <el-link v-if="matchState(scope, /[]/)" - @click="setAttatchDetail(scope.$index, scope.row)" - class="elLink">{{ $t('common.see') }}</el-link> + <el-link + v-if="matchState(scope, /[]/)" + @click="setAttatchDetail(scope.$index, scope.row)" + class="elLink" + >{{ $t('common.see') }}</el-link> </template> </el-table-column> @@ -238,52 +340,83 @@ <map-sdk v-if='showMapVisible'></map-sdk> </div> </el-dialog> --> - <el-dialog title="棰勮" - :append-to-body="false" - :visible.sync="dialog.dialogVisible" - width="70%" - :close-on-click-modal="false"> - <div v-if="dialog.isPdf" - class="pdfClass"> - <iframe :src="dialog.src" - type="application/x-google-chrome-pdf" - width="100%" - height="100%"> + <el-dialog + title="棰勮" + :append-to-body="false" + :visible.sync="dialog.dialogVisible" + width="70%" + :close-on-click-modal="false" + > + <div + v-if="dialog.isPdf" + class="pdfClass" + > + <iframe + :src="dialog.src" + type="application/x-google-chrome-pdf" + width="100%" + height="100%" + > </iframe> </div> - <div v-if="dialog.isJpg" - class="pdfClass"> + <div + v-if="dialog.isJpg" + class="pdfClass" + > - <el-image style="width:100%; height:100%" - :src="dialog.src" - :preview-src-list="[dialog.src]"> + <el-image + style="width:100%; height:100%" + :src="dialog.src" + :preview-src-list="[dialog.src]" + > </el-image> </div> </el-dialog> - <div v-show="modelKeyFlag" - class="modelLayer box_divm" - v-drag> - <el-form ref="form" - :model="modelForm" - label-width="80px"> + <div + v-show="modelKeyFlag" + class="modelLayer box_divm" + v-drag + > + <el-form + ref="form" + :model="modelForm" + label-width="80px" + > <el-form-item label="涓婚敭ID"> <el-select v-model="modelLayerId"> - <el-option v-for="item in optionKey" - :key="item.value" - :label="item.label" - :value="item.value"> + <el-option + v-for="item in optionKey" + :key="item.value" + :label="item.label" + :value="item.value" + > </el-option> </el-select> </el-form-item> <el-form-item> - <el-button type="primary" - size="small" - @click="setSureKeyModelKey">{{$t('common.confirm')}}</el-button> + <el-button + type="primary" + size="small" + @click="setSureKeyModelKey" + >{{ $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> @@ -296,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' @@ -305,7 +439,7 @@ components: { undergroundModel }, - data () { + data() { return { levelArray: [ 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, @@ -330,7 +464,8 @@ info: '', icon: '', bak: '', - Id: '' + Id: '', + }, options: [ { @@ -363,7 +498,7 @@ isJpg: false, src: '' }, - modelType: ['ifc', 'fbx', 'rvt', '3dml', 'cpt'], + modelType: ['ifc', 'fbx', 'rvt', '3dml', 'cpt', 'osgb', 'las', 'laz'], editModelFlag: false, modelForm: { lon: 119, @@ -372,6 +507,11 @@ yaw: 0, alpha: 1, modelid: null, + west: null, + south: null, + east: null, + north: null, + scale: 1 }, app: { tileset: null, @@ -382,13 +522,69 @@ modelLayerId: null, optionKey: [], modelKeyFlag: false, + menuVisible: false, + rightClickMenuStyle: {}, // 鍙抽敭鑿滃崟鏍峰紡 + serveType: true, + layerData: "lf.sys_style" } }, - mounted () { + mounted() { this.init3DMap(); }, methods: { - setUndergroundMode () { + // 榧犳爣鍙冲嚮浜嬩欢 + 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 && this.$refs.undergroundModel && @@ -399,14 +595,14 @@ this.$refs.undergroundModel.open("鍦颁笅妯″紡", null,); } }, - refreshAttatchDetail () { + refreshAttatchDetail() { this.dialog.src = ""; this.dialog.dialogVisible = false; this.dialog.isPdf = false; this.dialog.isJpg = false; }, //闄勪欢鏌ョ湅 - setAttatchDetail (index, row) { + setAttatchDetail(index, row) { this.refreshAttatchDetail() var name = row.name; if (name.indexOf('.pdf') != -1 || name.indexOf('.PDF') != -1) { @@ -432,7 +628,7 @@ this.dialog.src = url } }, - async setAttachDel () { + async setAttachDel() { var std = []; for (var i in this.attacgSelection) { std.push(this.attacgSelection[i].id); @@ -443,7 +639,7 @@ } this.getAttacthFlieList(); }, - setAttachInsert () { + setAttachInsert() { var token = getToken(); var fs = document.getElementById("insertFile"); if (fs.files.length == 0) { @@ -459,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, @@ -487,15 +683,15 @@ ); }, //闄勪欢=>鏂囦欢閫夋嫨 - getInsertFile () { + getInsertFile() { $('#insertFile').click(); }, - insertFile () { + insertFile() { var val = document.getElementById('insertFile').files; if (!val || !val.length) return; this.fromfile.file = val[0].name; }, - matchState (state = "", reg) { + matchState(state = "", reg) { var row = state.row; var name = row.name; if ( @@ -517,10 +713,10 @@ return false; }, - statSizeChange (row, column) { + statSizeChange(row, column) { return this.stateFormatSizes(row.sizes) }, - stateFormatSizes (res) { + stateFormatSizes(res) { if (res >= 1024) { const val = parseFloat(res / 1024).toFixed(3); return val + ' GB'; @@ -529,14 +725,14 @@ } }, // 闄勪欢=>琛ㄦ牸閫夋嫨 - handleAttatchChange (val) { + handleAttatchChange(val) { this.attacgSelection = val; }, //闄勪欢鍒楄〃鏌ヨ - async getAttacthFlieList () { + async getAttacthFlieList() { var obj = { eventid: this.layerID, - tabName: "lf.sys_style" + tabName: this.layerData }; const res = await comprehensive_selectFiles(obj); if (res.code != 200) { @@ -545,12 +741,12 @@ } this.tableData = res.result; }, - handleClick () { + handleClick() { if (this.activeName == "second") { this.getAttacthFlieList(); } }, - async EditData () { + async EditData() { const data = await comprehensive_updateModel(this.formInline) @@ -572,7 +768,7 @@ this.startModelData(); }, - async InsertData () { + async InsertData() { var std = { "bak": this.formInline.bak, "guid": this.formInline.Id, @@ -599,7 +795,9 @@ }, - handleClose () { + handleClose() { + this.layerData = "lf.sys_style" + this.serveType = true; this.dialogVisible = false; this.formInline = { title: '', @@ -614,7 +812,7 @@ this.activeName = "first" }, - async setShowModelInfo (result) { + async setShowModelInfo(result) { var modelKey = 'id'; if (result.tileset) { @@ -654,7 +852,7 @@ this.dialogVisible = true; }, - async startModelData () { + async startModelData() { var obj = { layerid: this.formInline.layerId, modelid: this.formInline.Id @@ -672,7 +870,18 @@ 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) { @@ -683,15 +892,39 @@ 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 (rs) { + setAddLayers(rs) { if (rs.serveType == "Tileset" || rs.serveType == "3DML") { var url; @@ -705,7 +938,7 @@ new Cesium.Cesium3DTileset({ 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 @@ -721,10 +954,41 @@ } }); + } 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, rs) { + async getArgsTileset(tileset, rs) { if (rs.pubid > 0) { @@ -747,7 +1011,7 @@ } }, - tileSet (tileset, height) { + tileSet(tileset, height) { //3dtile妯″瀷鐨勮竟鐣岀悆浣� var boundingSphere = tileset.boundingSphere; //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛� @@ -761,7 +1025,7 @@ tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // Viewer.flyTo(tileset); }, - reloadTile (tileset, res) { + reloadTile(tileset, res) { var vm = JSON.parse(res) var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); var converter = Cesium.Transforms.eastNorthUpToFixedFrame; @@ -773,7 +1037,7 @@ - handleCheckChange (data, checked, indeterminate) { + handleCheckChange(data, checked, indeterminate) { if (data.type == 1) { this.getchilds(data); this.setChangeTileset(this.childOption, checked); @@ -781,17 +1045,35 @@ this.setChangeTileset([data], checked); } }, - handleNodeClick (data) { + 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]); + } } } } }, - getchilds (source) { + 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) { if (source.children) { var child = source.children for (var i in child) { @@ -805,7 +1087,7 @@ this.childOption.push(source) } }, - init3DMap () { + init3DMap() { //鍦板浘鍒濆鍖� window.sgworld = new SmartEarth.SGWorld("mapdiv", { licenseServer: window.sceneConfig.licenseServer, @@ -833,6 +1115,13 @@ 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, @@ -855,6 +1144,7 @@ requestVertexNormals: true, }; window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + window.terrainFlag = '2' // window.terrainLayer = new Cesium.CesiumTerrainProvider({ // url: demLayer // }); @@ -869,7 +1159,7 @@ window.terrainLayer.deleteObject(); // Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); // window.terrainLayer = null; - + window.terrainLayer = null; window.terrainLayer = new Cesium.CesiumTerrainProvider({ url: res.url }); @@ -882,6 +1172,7 @@ roll: 0.0 } });*/ + var wkt = this.$wkt.parse(res.geom); var height = this.getHeight(wkt.coordinates[2]); Viewer.camera.flyTo({ @@ -899,12 +1190,13 @@ Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), }); - } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt' || type == 'cpt') { + } 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() @@ -912,18 +1204,36 @@ }); } 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(); } } }, - getModeKeyId () { + getModeKeyId() { window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); window.ModeKeyIdHandler.setInputAction((event) => { @@ -942,10 +1252,16 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) }, - async resave () { - if (!this.modelForm.modelid) { - return this.$message('鏈�夋嫨妯″瀷涓婚敭ID'); + async resave() { + + 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) { @@ -963,8 +1279,11 @@ } this.reload(); }, - reload () { + reload() { + debugger + sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) var json = JSON.stringify(this.modelForm); + 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); @@ -974,13 +1293,14 @@ var that = this; 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); @@ -989,7 +1309,7 @@ }, //鎷惧彇 - pickupCoords () { + pickupCoords() { if (this.app.handler) { this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); this.app.handler = undefined; @@ -1010,49 +1330,41 @@ that.modelForm.lat = y; that.modelForm.height = z; that.pickupCoords(); + that.reload(); + }, Cesium.ScreenSpaceEventType.LEFT_CLICK); }, // 淇濈暀灏忔暟浣� - toFixed (d, n) { + toFixed(d, n) { var p = Math.pow(10, n); return Math.round(d * p) / p; }, - update () { - 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 - } - // if (!this.modelForm.alpha || isNaN(this.modelForm.alpha)) { - - // if (this.app.under) { - // - // this.modelForm.alpha = sgworld._Analysis._UndergroundMode._alpha; - // } else { - // this.modelForm.alpha = 1 - // } + update() { + // 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) }, - setTilesetArgs (f) { + setTilesetArgs(f) { if (!this.app.tileset || this.app.isBusy) return; @@ -1061,32 +1373,35 @@ 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; }, //鍦颁笅 - underground () { + underground() { this.app.under = !this.app.under; sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) }, //鏄鹃殣 - showTileset () { + showTileset() { + if (!this.app.tileset) return; this.app.tileset.show = !this.app.tileset.show; }, //瀹氫綅 - locateTo () { + locateTo() { if (!this.app.tileset) return; Viewer.flyTo(this.app.tileset); }, - createTileset (res) { + 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, @@ -1103,9 +1418,10 @@ dynamicScreenSpaceError: true // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿 }); }, - setEditModelLayer (res) { - this.editModelFlag = true; + setEditModelLayer(res) { + if (res.json) { + var json = JSON.parse(res.json) this.modelForm = json; this.reload(); @@ -1113,10 +1429,9 @@ this.getTilesetArgs(); } }, - setModleLocatin () { + setModleLocatin() { var res = this.$store.state.previewLayer; var type = res.type; - if (this.modelType.indexOf(type) != -1) { if (type != '3dml') { this.setEditModelLayer(res) @@ -1127,7 +1442,7 @@ } }, - setModeLayerID (res) { + setModeLayerID(res) { var value = res.getPropertyNames(); var std = []; @@ -1141,12 +1456,12 @@ this.modelLayerId = this.optionKey[0].label; this.modelKeyFlag = true; }, - setSureKeyModelKey () { + setSureKeyModelKey() { this.modelKeyFlag = false; this.modelForm.modelid = this.modelLayerId window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //绉婚櫎浜嬩欢 }, - getTilesetArgs () { + getTilesetArgs() { this.app.isBusy = true; var cm = this.app.tileset._root.transform; var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]); @@ -1159,7 +1474,7 @@ } this.app.isBusy = false; }, - getEditTilesetArgs () { + getEditTilesetArgs() { this.app.isBusy = true; var std = { lon: 0, @@ -1182,7 +1497,7 @@ return std }, - async setShowModelLayer () { + async setShowModelLayer() { const data = await perms_selectLayers(); if (data.code != 200) { @@ -1199,12 +1514,15 @@ if (str.type == 1) { val.push(str); } - if (str.url != null && str.type == 2 && str.serveType == 'Tileset') { - val.push(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.url != null && str.type == 2 && str.serveType == '3DML') { - val.push(str); - } + // if (str.url != null && str.type == 2 && str.serveType == '3DML') { + // + // } }); var res = this.setTreeData(val); @@ -1231,7 +1549,7 @@ }, Cesium.ScreenSpaceEventType.LEFT_CLICK) } }, - setTreeData (source) { + setTreeData(source) { let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 return cloneData.filter((father) => { // 寰幆鎵�鏈夐」 @@ -1255,7 +1573,7 @@ // //淇敼妯″瀷鐭╅樀 // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // }, - getHeight (level) { + getHeight(level) { if (level > 0 && level < 23) { return this.levelArray[level] } @@ -1271,6 +1589,7 @@ .previewBox { width: 100%; height: 100%; + .modelLayer { position: absolute; z-index: 40; @@ -1280,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; @@ -1300,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> -- Gitblit v1.9.3