From 3ffbf14664836032438b1fd496aefbd99187e2c9 Mon Sep 17 00:00:00 2001 From: surprise <15810472099@163.com> Date: 星期一, 22 四月 2024 15:17:54 +0800 Subject: [PATCH] 信息管理添加CAD查看 --- src/components/preview_map.vue | 1284 +++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 829 insertions(+), 455 deletions(-) diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue index b2f8517..76a3556 100644 --- a/src/components/preview_map.vue +++ b/src/components/preview_map.vue @@ -18,7 +18,8 @@ :default-expanded-keys="[1]" :props="defaultProps" @node-click="handleNodeClick" - @check="handleCheckChange"> + @check="handleCheckChange" + @node-contextmenu="rightClick"> </el-tree> </div> </div> @@ -29,81 +30,91 @@ label-width="80px"> <el-form-item> <el-button size="small" + v-if="$store.state.previewLayer.stype != 'yl'" + @click="dialogLayerVisible = true">鍥惧眰</el-button> + <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">鍦颁笅</el-button> - <el-button v-if="$store.state.previewLayer.type != '3dml'" + v-if="$store.state.previewLayer.type != 'mpt'" + @click="setUndergroundMode">鍦颁笅</el-button> + <br /> + <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'" + <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'" + <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'" + <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'"> + 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> + v-model="modelForm.lon"></el-input> + </el-form-item> <el-form-item label="绾害:" - v-if="$store.state.previewLayer.type != '3dml'"> + 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> + v-model="modelForm.lat"></el-input> + </el-form-item> <el-form-item label="楂樺害:" - v-if="$store.state.previewLayer.type != '3dml'"> + 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> + v-model="modelForm.height"></el-input> + </el-form-item> <el-form-item label="瑙掑害:" - v-if="$store.state.previewLayer.type != '3dml'"> + 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> + v-model="modelForm.yaw"></el-input> + </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.alpha" - @input="update"></el-input> - <el-slider v-model="modelForm.alpha" - @input="update" - :min="0" - :step="0.01" - :max="1"></el-slider> + 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> @@ -118,7 +129,8 @@ <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane label="灞炴��" - name="first"> + name="first" + v-if="serveType"> <el-form ref="form" :model="formInline" label-width="80px"> @@ -148,12 +160,14 @@ type="success" plain size="small" - @click="InsertData">{{$t('common.increase')}}</el-button> + @click="InsertData">{{ + $t('common.increase') }}</el-button> <el-button v-show="!isShowModel" type="info" plain size="small" - @click="EditData">{{$t('common.update')}}</el-button> + @click="EditData">{{ $t('common.update') + }}</el-button> </el-form-item> </el-form> @@ -172,8 +186,8 @@ id="insertFile" multiple="multiple" style="display: none" - @change="insertFile( )" /> - <el-link @click="getInsertFile( )" + @change="insertFile()" /> + <el-link @click="getInsertFile()" :underline="false"><i class="el-icon-folder-opened"></i></el-link> </el-form-item> <el-form-item> @@ -181,12 +195,13 @@ <el-col :span="3"> <el-link class="elLink" :underline="false" - @click="setAttachInsert">{{$t('common.append')}}</el-link> + @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> + @click="setAttachDel">{{ $t('common.delete') }}</el-link> </el-col> </el-row> @@ -261,6 +276,34 @@ </div> </el-dialog> + + <div v-show="dialogLayerVisible" + class="levelLayer box_divm"> + <div class="levelTitle"> + <div> + 鍥惧眰鍒楄〃 + </div> + <div @click="dialogLayerVisible = false"> + <i class="el-icon-close"></i> + </div> + </div> + <div class="layerContent"> + <div v-for="(item, index) in layerTree" + class="contLayer"> + <div> + <el-checkbox v-model="item.checked" + @change="setLayerTreeChange(item)">{{ item.cnName }}</el-checkbox> + </div> + <div> + + <el-button icon="el-icon-map-location" + size="mini" + @click="setLayerTreeLocation(item)"></el-button> + </div> + </div> + </div> + + </div> <div v-show="modelKeyFlag" class="modelLayer box_divm" v-drag> @@ -279,11 +322,21 @@ <el-form-item> <el-button type="primary" size="small" - @click="setSureKeyModelKey">{{$t('common.confirm')}}</el-button> + @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 +349,9 @@ comprehensive_selectFiles, dataQuery_deletes, publish_update, - comprehensive_selectPubById + comprehensive_selectPubById, + resSelectCountForRole, + meta_selectConvertToDwg } from '../api/api.js'; import { getToken } from '@/utils/auth'; import undergroundModel from '../views/Tools/undergroundModel.vue' @@ -308,9 +363,9 @@ data () { return { levelArray: [ - 0, 40000000, 20000000, 10000000, 5000000, 2000000, 1000000, 500000, - 250000, 200000, 100000, 50000, 17000, 9000, 5000, 2000, 1000, 500, 200, - 100, 50, 25, 10, 0, + 0,40000000,20000000,10000000,5000000,2000000,1000000,500000, + 250000,200000,100000,50000,17000,9000,5000,2000,1000,500,200, + 100,50,25,10,0, ], modelLayer: false, treeData: [], @@ -320,6 +375,7 @@ }, childOption: [], dialogVisible: false, + dialogLayerVisible: false, isShowModel: false, tableData: [], formInline: { @@ -330,25 +386,26 @@ info: '', icon: '', bak: '', - Id: '' + Id: '', + }, options: [ { value: '鍊炬枩妯″瀷', label: '鍊炬枩妯″瀷' - }, { + },{ value: 'BIM妯″瀷', label: 'BIM妯″瀷' - }, { + },{ value: '鐐逛簯妯″瀷', label: '鐐逛簯妯″瀷' - }, { + },{ value: '鍦拌川璁捐妯″瀷', label: '鍦拌川璁捐妯″瀷' - }, { + },{ value: '浜哄伐妯″瀷', label: '浜哄伐妯″瀷' - }, { + },{ value: '鍏朵粬妯″瀷', label: '鍏朵粬妯″瀷' }], @@ -363,7 +420,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 +429,11 @@ yaw: 0, alpha: 1, modelid: null, + west: null, + south: null, + east: null, + north: null, + scale: 1 }, app: { tileset: null, @@ -382,84 +444,227 @@ modelLayerId: null, optionKey: [], modelKeyFlag: false, + menuVisible: false, + rightClickMenuStyle: {}, // 鍙抽敭鑿滃崟鏍峰紡 + serveType: true, + layerData: "lf.sys_style", + layerTree: null } }, mounted () { this.init3DMap(); + this.getLayers(); }, methods: { + async getLayers () { + const data=await perms_selectLayers(); + if(data.code!=200) { + return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触"); + } + + var layer=data.result.filter(res => { + if(res.type==2) { + if(res.serveType=='WMTS'||res.serveType=='TMS') { + res.checked=false; + return res + } + } + }) + this.layerTree=layer + }, + setLayerTreeChange (res) { + if(res.checked) { + this.setAddTreeLayers(res) + } else { + this.setRemoveTreeLayers(res) + } + }, + async setLayerTreeLocation (res) { + if(res.pubid) { + let data=await comprehensive_selectPubById({ id: res.pubid }); + if(data.result&&data.result.geom) { + let wkt=this.$wkt.parse(data.result.geom); + let height=this.getHeight(wkt.coordinates[2]); + Viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1],wkt.coordinates[0],sceneConfig.extureHeight), // 2000 + }); + } + } + }, + async setAddTreeLayers (res) { + var url=res.url.indexOf("{host}")>-1? res.url.replace("{host}",iisHost):res.url; + + var layer=Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: url, + maximumLevel: 18, + }) + ); + layer.name=res.cnName+'_'+res.id + }, + setRemoveTreeLayers (res) { + var name=res.cnName+'_'+res.id; + var layers=Viewer.imageryLayers._layers; + for(var i in layers) { + if(layers[i].name==name) { + Viewer.imageryLayers.remove(layers[i]) + } + } + }, + setTreeData (source) { + let cloneData=JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 + return cloneData.filter((father) => { + // 寰幆鎵�鏈夐」 + let branchArr=cloneData.filter((child) => father.id==child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 + if(branchArr.length>0) { + branchArr.sort(function(a,b) { + + return a.orderNum-b.orderNum + }) + } + branchArr.length>0? (father.children=branchArr):""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� + // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛� + // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋� + return father.pid==0; // 杩斿洖涓�绾ц彍鍗� + }); + }, + // 榧犳爣鍙冲嚮浜嬩欢 + 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 && + if(window.UndergroundMode) { + this.$refs&& + this.$refs.undergroundModel&& this.$refs.undergroundModel.close(); } else { - this.$refs && - this.$refs.undergroundModel && - this.$refs.undergroundModel.open("鍦颁笅妯″紡", null,); + this.$refs&& + this.$refs.undergroundModel&& + this.$refs.undergroundModel.open("鍦颁笅妯″紡",null,); } }, refreshAttatchDetail () { - this.dialog.src = ""; - this.dialog.dialogVisible = false; - this.dialog.isPdf = false; - this.dialog.isJpg = false; + 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) { - this.dialog.dialogVisible = true; - this.dialog.isPdf = true; - var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken(); - this.dialog.src = url - } else if ( - name.indexOf('.jpg') != -1 - || name.indexOf('.gif') != -1 - || name.indexOf('.png') != -1 - || name.indexOf('.jpeg') != -1 - || name.indexOf('.JPG') != -1 - || name.indexOf('.GIF') != -1 - || name.indexOf('.PNG') != -1 - || name.indexOf('.JPEG') != -1 - || name.indexOf('.BMP') != -1 - || name.indexOf('.bmp') != -1 + var name=row.name; + if(name.indexOf('.pdf')!=-1||name.indexOf('.PDF')!=-1) { + this.dialog.dialogVisible=true; + this.dialog.isPdf=true; + var url=BASE_URL+"/comprehensive/downloadForView?guid="+row.guid+"&token="+getToken(); + this.dialog.src=url + } else if( + name.indexOf('.jpg')!=-1 + ||name.indexOf('.gif')!=-1 + ||name.indexOf('.png')!=-1 + ||name.indexOf('.jpeg')!=-1 + ||name.indexOf('.JPG')!=-1 + ||name.indexOf('.GIF')!=-1 + ||name.indexOf('.PNG')!=-1 + ||name.indexOf('.JPEG')!=-1 + ||name.indexOf('.BMP')!=-1 + ||name.indexOf('.bmp')!=-1 ) { - this.dialog.dialogVisible = true; - this.dialog.isJpg = true; - var url = BASE_URL + "/comprehensive/downloadForView?guid=" + row.guid + "&token=" + getToken(); - this.dialog.src = url + this.dialog.dialogVisible=true; + this.dialog.isJpg=true; + var url=BASE_URL+"/comprehensive/downloadForView?guid="+row.guid+"&token="+getToken(); + this.dialog.src=url + } if(name.indexOf('.dwg')!=-1) { + console.log(row) + this.handleCAD(row) } }, + async handleCAD (row) { + const data=await meta_selectConvertToDwg(row.id); + if(data.result) { + var url=iisHost+"/dwg/cad/browse/?file=data/"+data.result; + window.open(url) + } else { + return this.$message("鏁版嵁杞崲澶辫触锛屾棤娉曢瑙�"); + } + + }, async setAttachDel () { - var std = []; - for (var i in this.attacgSelection) { + var std=[]; + for(var i in this.attacgSelection) { std.push(this.attacgSelection[i].id); } - const res = await dataQuery_deletes({ ids: std.toString() }); - if (res.code != 200) { + const res=await dataQuery_deletes({ ids: std.toString() }); + if(res.code!=200) { this.$message.error("鏂囦欢鍒犻櫎澶辫触"); } this.getAttacthFlieList(); }, setAttachInsert () { - var token = getToken(); - var fs = document.getElementById("insertFile"); - if (fs.files.length == 0) { + var token=getToken(); + var fs=document.getElementById("insertFile"); + if(fs.files.length==0) { this.$message({ message: "璇烽�夋嫨瑕佷笂浼犵殑鏂囦欢锛�", type: "warning", }); return; } - const formData = new FormData(); - for (var i = 0, c = fs.files.length; i < c; i++) { - formData.append("file", fs.files[i]); // fs.files[i].name,file + const formData=new FormData(); + for(var i=0,c=fs.files.length;i<c;i++) { + formData.append("file",fs.files[i]); // fs.files[i].name,file } - $.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, @@ -472,15 +677,15 @@ message: "闄勪欢娣诲姞鎴愬姛", type: "success", }); - document.getElementById("insertFile").value = ""; - this.fromfile = { + document.getElementById("insertFile").value=""; + this.fromfile={ file: "", }; this.getAttacthFlieList(); }, error: (e) => { - document.getElementById("insertFile").value = ""; + document.getElementById("insertFile").value=""; this.$message.error("闄勪欢娣诲姞澶辫触"); }, } @@ -491,70 +696,71 @@ $('#insertFile').click(); }, insertFile () { - var val = document.getElementById('insertFile').files; - if (!val || !val.length) return; - this.fromfile.file = val[0].name; + var val=document.getElementById('insertFile').files; + if(!val||!val.length) return; + this.fromfile.file=val[0].name; }, - matchState (state = "", reg) { - var row = state.row; - var name = row.name; - if ( - name.indexOf('.jpg') != -1 - || name.indexOf('.gif') != -1 - || name.indexOf('.png') != -1 - || name.indexOf('.jpeg') != -1 - || name.indexOf('.JPG') != -1 - || name.indexOf('.GIF') != -1 - || name.indexOf('.PNG') != -1 - || name.indexOf('.JPEG') != -1 - || name.indexOf('.BMP') != -1 - || name.indexOf('.bmp') != -1 - || name.indexOf('.pdf') != -1 - || name.indexOf('.PDF') != -1 + matchState (state="",reg) { + var row=state.row; + var name=row.name; + if( + name.indexOf('.jpg')!=-1 + ||name.indexOf('.gif')!=-1 + ||name.indexOf('.png')!=-1 + ||name.indexOf('.jpeg')!=-1 + ||name.indexOf('.JPG')!=-1 + ||name.indexOf('.GIF')!=-1 + ||name.indexOf('.PNG')!=-1 + ||name.indexOf('.JPEG')!=-1 + ||name.indexOf('.BMP')!=-1 + ||name.indexOf('.bmp')!=-1 + ||name.indexOf('.pdf')!=-1 + ||name.indexOf('.PDF')!=-1 + ||name.indexOf('.dwg')!=-1 ) { return true; } return false; }, - statSizeChange (row, column) { + statSizeChange (row,column) { return this.stateFormatSizes(row.sizes) }, stateFormatSizes (res) { - if (res >= 1024) { - const val = parseFloat(res / 1024).toFixed(3); - return val + ' GB'; + if(res>=1024) { + const val=parseFloat(res/1024).toFixed(3); + return val+' GB'; } else { - return res + ' MB'; + return res+' MB'; } }, // 闄勪欢=>琛ㄦ牸閫夋嫨 handleAttatchChange (val) { - this.attacgSelection = val; + this.attacgSelection=val; }, //闄勪欢鍒楄〃鏌ヨ async getAttacthFlieList () { - var obj = { + var obj={ eventid: this.layerID, - tabName: "lf.sys_style" + tabName: this.layerData }; - const res = await comprehensive_selectFiles(obj); - if (res.code != 200) { + const res=await comprehensive_selectFiles(obj); + if(res.code!=200) { this.$message.error('鍒楄〃璋冪敤澶辫触'); return } - this.tableData = res.result; + this.tableData=res.result; }, handleClick () { - if (this.activeName == "second") { + if(this.activeName=="second") { this.getAttacthFlieList(); } }, async EditData () { - const data = await comprehensive_updateModel(this.formInline) + const data=await comprehensive_updateModel(this.formInline) - if (data.code != 200) { + if(data.code!=200) { this.$message.error('淇敼澶辫触'); return } @@ -565,15 +771,15 @@ type: 'success' }); - var that = this; - that.dialogVisible = false; - this.formInline.title = this.formInline.name - that.dialogVisible = true; + var that=this; + that.dialogVisible=false; + this.formInline.title=this.formInline.name + that.dialogVisible=true; this.startModelData(); }, async InsertData () { - var std = { + var std={ "bak": this.formInline.bak, "guid": this.formInline.Id, "layerid": this.formInline.layerId, @@ -581,8 +787,8 @@ "name": this.formInline.name, "type": this.formInline.type } - const data = await comprehensive_insertModel(std) - if (data.code != 200) { + const data=await comprehensive_insertModel(std) + if(data.code!=200) { this.$message.error('娣诲姞澶辫触'); } this.$message({ @@ -590,18 +796,20 @@ type: 'success' }); - var that = this; - that.dialogVisible = false; - this.formInline.title = this.formInline.name - that.dialogVisible = true; + var that=this; + that.dialogVisible=false; + this.formInline.title=this.formInline.name + that.dialogVisible=true; this.startModelData(); }, handleClose () { - this.dialogVisible = false; - this.formInline = { + this.layerData="lf.sys_style" + this.serveType=true; + this.dialogVisible=false; + this.formInline={ title: '', file: '', name: '', @@ -611,81 +819,116 @@ bak: '', Id: '' } - this.activeName = "first" + this.activeName="first" }, async setShowModelInfo (result) { - var modelKey = 'id'; + var modelKey='id'; - if (result.tileset) { - if (result.tileset.pubid && parseInt(result.tileset.pubid) > 0) { - const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) + 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) { + if(data.code!=200) { return } else { - modelKey = JSON.parse(data.result.json).modelid + modelKey=JSON.parse(data.result.json).modelid } - if (!modelKey) { + if(!modelKey) { return this.$message('娌℃湁妯″瀷涓婚敭ID,鏃犳硶鏌ヨ鏁版嵁'); } - this.formInline.Id = result.getProperty(modelKey); - this.layerID = result.getProperty(modelKey); + this.formInline.Id=result.getProperty(modelKey); + this.layerID=result.getProperty(modelKey); } } else { - var id = '3dml' + result.primitive.id; - this.formInline.Id = id; - this.layerID = id; + var id='3dml'+result.primitive.id; + this.formInline.Id=id; + this.layerID=id; } - this.formInline.layerId = result.primitive.layerId; - this.formInline.layerName = result.primitive.id; + 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.formInline.Id) { + this.formInline.Id="noAuto_"+this.formInline.layerId; } - if (!this.layerID) { - this.layerID = "noAuto_" + this.formInline.layerId; + if(!this.layerID) { + this.layerID="noAuto_"+this.formInline.layerId; } this.startModelData(); - this.dialogVisible = true; + this.dialogVisible=true; }, async startModelData () { - var obj = { + var obj={ layerid: this.formInline.layerId, modelid: this.formInline.Id } - const data = await comprehensive_selectModelByGuid(obj); - if (data.code != 200) { + const data=await comprehensive_selectModelByGuid(obj); + if(data.code!=200) { return; } - if (data.result == null) { - this.isShowModel = true; - this.formInline.name = this.formInline.title; + 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; + this.isShowModel=false; + this.formInline=data.result; + this.formInline.title=this.formInline.name; } }, - setChangeTileset (result) { - var value = this.$refs.tree.getCheckedNodes(); - var std = []; - for (var i in value) { + 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) { std.push(value[i].id) } - for (var i in result) { - var tile = result[i] - if (std.indexOf(tile.id) != -1) { + for(var i in result) { + var tile=result[i] + 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]) + } } } } @@ -693,109 +936,158 @@ }, setAddLayers (rs) { - if (rs.serveType == "Tileset" || rs.serveType == "3DML") { + if(rs.serveType=="Tileset"||rs.serveType=="3DML") { var url; - if (rs.url.indexOf("{host}") != -1) { - url = rs.url.replace("{host}", iisHost); + if(rs.url.indexOf("{host}")!=-1) { + url=rs.url.replace("{host}",iisHost); } else { - url = modelUrl + "/" + rs.url + url=modelUrl+"/"+rs.url } - var tileset = Viewer.scene.primitives.add( + var tileset=Viewer.scene.primitives.add( 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 }) ); - var that = this; + var that=this; tileset.readyPromise.then((tileset) => { - tileset.id = rs.cnName; - tileset.layerId = rs.id; - tileset.pubid = rs.pubid; - if (rs.serveType != '3DML') { - that.getArgsTileset(tileset, rs); + 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, rs) { + async getArgsTileset (tileset,rs) { - if (rs.pubid > 0) { + if(rs.pubid>0) { - const data = await comprehensive_selectPubById({ id: rs.pubid }) + const data=await comprehensive_selectPubById({ id: rs.pubid }) - if (data.code != 200) { + if(data.code!=200) { } else { - if (rs.serveType == '3DML') { - this.tileSet(tileset, parseFloat(rs.elev)) + if(rs.serveType=='3DML') { + this.tileSet(tileset,parseFloat(rs.elev)) } else { - this.reloadTile(tileset, data.result.json) + this.reloadTile(tileset,data.result.json) } } } else { - this.tileSet(tileset, parseFloat(rs.elev)) + this.tileSet(tileset,parseFloat(rs.elev)) } }, - tileSet (tileset, height) { + tileSet (tileset,height) { //3dtile妯″瀷鐨勮竟鐣岀悆浣� - var boundingSphere = tileset.boundingSphere; + var boundingSphere=tileset.boundingSphere; //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛� - var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center); + var cartographic_original=Cesium.Cartographic.fromCartesian(boundingSphere.center); //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍� - var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height); - var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height); + var Cartesian3_original=Cesium.Cartesian3.fromRadians(cartographic_original.longitude,cartographic_original.latitude,cartographic_original.height); + var Cartesian3_offset=Cesium.Cartesian3.fromRadians(cartographic_original.longitude,cartographic_original.latitude,height); //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹� - var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3()); + var translation=Cesium.Cartesian3.subtract(Cartesian3_offset,Cartesian3_original,new Cesium.Cartesian3()); //淇敼妯″瀷鐭╅樀 - tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); + tileset.modelMatrix=Cesium.Matrix4.fromTranslation(translation); // Viewer.flyTo(tileset); }, - reloadTile (tileset, res) { - var vm = JSON.parse(res) - var pos = Cesium.Cartesian3.fromDegrees(vm.lon, vm.lat, vm.height); - var converter = Cesium.Transforms.eastNorthUpToFixedFrame; - var hpr = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw), 0, 0); - var matrix = Cesium.Transforms.headingPitchRollToFixedFrame(pos, hpr, Cesium.Ellipsoid.WGS84, converter); - tileset._root.transform = matrix; + reloadTile (tileset,res) { + var vm=JSON.parse(res) + var pos=Cesium.Cartesian3.fromDegrees(vm.lon,vm.lat,vm.height); + var converter=Cesium.Transforms.eastNorthUpToFixedFrame; + var hpr=new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(vm.yaw),0,0); + var matrix=Cesium.Transforms.headingPitchRollToFixedFrame(pos,hpr,Cesium.Ellipsoid.WGS84,converter); + tileset._root.transform=matrix; Viewer.flyTo(tileset); }, - handleCheckChange (data, checked, indeterminate) { - if (data.type == 1) { + handleCheckChange (data,checked,indeterminate) { + if(data.type==1) { this.getchilds(data); - this.setChangeTileset(this.childOption, checked); + this.setChangeTileset(this.childOption,checked); } else { - this.setChangeTileset([data], checked); + this.setChangeTileset([data],checked); } }, handleNodeClick (data) { - 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]); + this.menuVisible=false + if(data.type==2) { + this.currentData=data; + + 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) { - if (source.children) { - var child = source.children - for (var i in child) { - if (child[i].children) { + if(source.children) { + var child=source.children + for(var i in child) { + if(child[i].children) { this.getchilds(child[i]) } else { this.childOption.push(child[i]) @@ -807,33 +1099,40 @@ }, init3DMap () { //鍦板浘鍒濆鍖� - window.sgworld = new SmartEarth.SGWorld("mapdiv", { + window.sgworld=new SmartEarth.SGWorld("mapdiv",{ licenseServer: window.sceneConfig.licenseServer, }); - window.Viewer = window.sgworld._Viewer; + window.Viewer=window.sgworld._Viewer; // Viewer.camera.flyTo({ // destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000), // }); - if (is_production) { + if(is_production) { Viewer.imageryLayers.removeAll(); } - Viewer._enableInfoOrSelection = false; + Viewer._enableInfoOrSelection=false; //鏄剧ずfps - Viewer.scene.debugShowFramesPerSecond = false; + Viewer.scene.debugShowFramesPerSecond=false; //瀵艰埅鎺т欢 // window.sgworld.navControl("nav", false); //姣斾緥灏� // 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) + if(is_production) { + var base_ulr=window.sceneConfig.baseUrl; + if(base_ulr.indexOf('{host}')>-1) { + base_ulr=base_ulr.replace("{host}",iisHost) } - window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider( + Viewer.imageryLayers.addImageryProvider( + new Cesium.UrlTemplateImageryProvider({ + url: base_ulr, + maximumLevel: 5 + }) + ); + + window.BaseMapLayer=Viewer.imageryLayers.addImageryProvider( new Cesium.UrlTemplateImageryProvider({ url: base_ulr, @@ -846,34 +1145,35 @@ - Viewer.scene.globe.depthTestAgainstTerrain = true; + Viewer.scene.globe.depthTestAgainstTerrain=true; // window.elevationTool = new SmartEarth.ElevationTool(window.sg); // elevationTool.setContourColor("#F1D487"); - var option = { - url: window.sceneConfig.SGUrl, - layerName: window.sceneConfig.mptName, - requestVertexNormals: true, - }; - window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + window.terrainLayer=new Cesium.CesiumTerrainProvider({ + // url: LFData + '/3d/terrain/dem20230321' + url: demLayer + }); + Viewer.terrainProvider=window.terrainLayer + + window.terrainFlag='1' // window.terrainLayer = new Cesium.CesiumTerrainProvider({ - // url: demLayer + // 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(); + if(this.$store.state.previewLayer) { + var res=this.$store.state.previewLayer; + var type=res.type; + console.log(type) + res.ulr=res.url.replace("{host}",iisHost); + if(type=='DEM') { + // window.terrainLayer.deleteObject(); + Viewer.terrainProvider=new Cesium.EllipsoidTerrainProvider(); // window.terrainLayer = null; - - window.terrainLayer = new Cesium.CesiumTerrainProvider({ + window.terrainLayer=null; + window.terrainLayer=new Cesium.CesiumTerrainProvider({ url: res.url }); - Viewer.terrainProvider = window.terrainLayer + Viewer.terrainProvider=window.terrainLayer /*Viewer.camera.flyTo({ destination: Cesium.Cartesian3.fromDegrees(113.229279, 31.215949, 1000), orientation: { @@ -882,78 +1182,107 @@ roll: 0.0 } });*/ - 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( + + if(res.geom) { + 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( new Cesium.UrlTemplateImageryProvider({ url: res.url, maximumLevel: 18 }) ); Viewer.camera.flyTo({ - destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), + destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1],wkt.coordinates[0],height), }); - } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt' || type == 'cpt') { - if (this.app.tileset) viewer.scene.primitives.remove(this.app.tileset); + } 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; - - Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) { + 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", { + } else if(res.url.indexOf('.mpt')!=-1) { + this.editModelFlag=true; + //Viewer.imageryLayers.removeAll(); + + var url=res.url.split(';'); + var ops={ url: url[0], layers: url[1] - }, "0", undefined, true, ""); - } else if (res.url.indexOf('menuLayer') != -1) { + }; + 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 () { - window.ModeKeyIdHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); + window.ModeKeyIdHandler=new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); window.ModeKeyIdHandler.setInputAction((event) => { - 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) { + 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) { this.setModeLayerID(pickedFeature); } else { - this.modelForm.modelid = 'id3dml' + this.modelForm.modelid='id3dml' window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //绉婚櫎浜嬩欢 } } } - }, Cesium.ScreenSpaceEventType.LEFT_CLICK) + },Cesium.ScreenSpaceEventType.LEFT_CLICK) }, async resave () { - if (!this.modelForm.modelid) { - return this.$message('鏈�夋嫨妯″瀷涓婚敭ID'); + var type=this.$store.state.previewLayer.type; + if(type&&type!="mpt"&&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}"); + 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) { + const data=await publish_update(this.$store.state.previewLayer); + if(data.code!=200) { this.$message.error('鏁版嵁淇濆瓨澶辫触'); } else { this.$message({ @@ -964,129 +1293,128 @@ this.reload(); }, reload () { - var json = JSON.stringify(this.modelForm); - var url = this.$store.state.previewLayer.url.replace("{host}", iisHost); - if (!url) return; - if (this.app.tileset) Viewer.scene.primitives.remove(this.app.tileset); - this.app.isBusy = true; - this.app.tileset = this.createTileset(this.$store.state.previewLayer); - var that = this; - Viewer.scene.primitives.add(this.app.tileset).readyPromise.then(function (ts) { - that.modelForm = JSON.parse(json); + 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); - 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); - that.app.tileset._root.transform = matrix; + this.app.isBusy=true; + this.app.tileset=this.createTileset(this.$store.state.previewLayer); + 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); - that.app.isBusy = false; + that.app.isBusy=false; }); }, //鎷惧彇 pickupCoords () { - if (this.app.handler) { + if(this.app.handler) { this.app.handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); - this.app.handler = undefined; + this.app.handler=undefined; return; } - var that = this; - this.app.handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); - this.app.handler.setInputAction(function (event) { + var that=this; + this.app.handler=new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); + this.app.handler.setInputAction(function(event) { - var ray = Viewer.camera.getPickRay(event.position); - var cartesian = Viewer.scene.globe.pick(ray, Viewer.scene); - var cartographic = Cesium.Cartographic.fromCartesian(cartesian); - var x = that.toFixed(Cesium.Math.toDegrees(cartographic.longitude), 7); - var y = that.toFixed(Cesium.Math.toDegrees(cartographic.latitude), 7); - var z = that.toFixed(cartographic.height, 3); + var ray=Viewer.camera.getPickRay(event.position); + var cartesian=Viewer.scene.globe.pick(ray,Viewer.scene); + var cartographic=Cesium.Cartographic.fromCartesian(cartesian); + var x=that.toFixed(Cesium.Math.toDegrees(cartographic.longitude),7); + var y=that.toFixed(Cesium.Math.toDegrees(cartographic.latitude),7); + var z=that.toFixed(cartographic.height,3); - that.modelForm.lon = x; - that.modelForm.lat = y; - that.modelForm.height = z; + that.modelForm.lon=x; + that.modelForm.lat=y; + that.modelForm.height=z; that.pickupCoords(); - }, Cesium.ScreenSpaceEventType.LEFT_CLICK); + that.reload(); + + },Cesium.ScreenSpaceEventType.LEFT_CLICK); }, // 淇濈暀灏忔暟浣� - toFixed (d, n) { - var p = Math.pow(10, n); + toFixed (d,n) { + var p=Math.pow(10,n); - return Math.round(d * p) / p; + 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 - // } + // 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) + sgworld.Analysis.UndergroundMode(this.app.under,this.modelForm.alpha) }, setTilesetArgs (f) { - if (!this.app.tileset || this.app.isBusy) return; + if(!this.app.tileset||this.app.isBusy) return; - var pos = Cesium.Cartesian3.fromDegrees(parseFloat(f.lon), parseFloat(f.lat), parseFloat(f.height)); + var pos=Cesium.Cartesian3.fromDegrees(parseFloat(f.lon),parseFloat(f.lat),parseFloat(f.height)); - 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 model = this.app.tileset - model._root.transform = matrix; + 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 () { - this.app.under = !this.app.under; - sgworld.Analysis.UndergroundMode(this.app.under, this.modelForm.alpha) + this.app.under=!this.app.under; + sgworld.Analysis.UndergroundMode(this.app.under,this.modelForm.alpha) }, //鏄鹃殣 showTileset () { - if (!this.app.tileset) return; - this.app.tileset.show = !this.app.tileset.show; + + if(!this.app.tileset) return; + this.app.tileset.show=!this.app.tileset.show; }, //瀹氫綅 locateTo () { - if (!this.app.tileset) return; + if(!this.app.tileset) return; Viewer.flyTo(this.app.tileset); }, createTileset (res) { - res.url = res.url.replace('{host}', iisHost) + 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, @@ -1104,24 +1432,24 @@ }); }, setEditModelLayer (res) { - this.editModelFlag = true; - if (res.json) { - var json = JSON.parse(res.json) - this.modelForm = json; + + 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) { - if (type != '3dml') { + var res=this.$store.state.previewLayer; + var type=res.type; + if(this.modelType.indexOf(type)!=-1) { + if(type!='3dml') { this.setEditModelLayer(res) } else { - this.editModelFlag = true; + this.editModelFlag=true; } } @@ -1129,66 +1457,66 @@ }, setModeLayerID (res) { - var value = res.getPropertyNames(); - var std = []; - for (var i in value) { + var value=res.getPropertyNames(); + var std=[]; + for(var i in value) { std.push({ value: value[i], label: value[i] }) } - this.optionKey = std; - this.modelLayerId = this.optionKey[0].label; - this.modelKeyFlag = true; + this.optionKey=std; + this.modelLayerId=this.optionKey[0].label; + this.modelKeyFlag=true; }, setSureKeyModelKey () { - this.modelKeyFlag = false; - this.modelForm.modelid = this.modelLayerId + this.modelKeyFlag=false; + this.modelForm.modelid=this.modelLayerId window.ModeKeyIdHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK); //绉婚櫎浜嬩欢 }, getTilesetArgs () { - this.app.isBusy = true; - var cm = this.app.tileset._root.transform; - var cartesian = new Cesium.Cartesian3(cm[12], cm[13], cm[14]); - var carto = Cesium.Cartographic.fromCartesian(cartesian); + this.app.isBusy=true; + var cm=this.app.tileset._root.transform; + var cartesian=new Cesium.Cartesian3(cm[12],cm[13],cm[14]); + var carto=Cesium.Cartographic.fromCartesian(cartesian); - if (carto) { - this.modelForm.lon = Cesium.Math.toDegrees(carto.longitude).toFixed(7); - this.modelForm.lat = Cesium.Math.toDegrees(carto.latitude).toFixed(7); - this.modelForm.height = carto.height.toFixed(3); + if(carto) { + this.modelForm.lon=Cesium.Math.toDegrees(carto.longitude).toFixed(7); + this.modelForm.lat=Cesium.Math.toDegrees(carto.latitude).toFixed(7); + this.modelForm.height=carto.height.toFixed(3); } - this.app.isBusy = false; + this.app.isBusy=false; }, getEditTilesetArgs () { - this.app.isBusy = true; - var std = { + 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); + 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); - if (carto) { - std.lon = Cesium.Math.toDegrees(carto.longitude).toFixed(7); - std.lat = Cesium.Math.toDegrees(carto.latitude).toFixed(7); - std.height = carto.height.toFixed(3); + if(carto) { + std.lon=Cesium.Math.toDegrees(carto.longitude).toFixed(7); + std.lat=Cesium.Math.toDegrees(carto.latitude).toFixed(7); + std.height=carto.height.toFixed(3); } - this.app.isBusy = false; + this.app.isBusy=false; return std }, async setShowModelLayer () { - const data = await perms_selectLayers(); - if (data.code != 200) { + const data=await perms_selectLayers(); + if(data.code!=200) { } else { - var std = data.result - var val = []; + var std=data.result + var val=[]; std.filter((str) => { // if (str.type == 1 && str.pid == 1) { // return str; @@ -1196,50 +1524,53 @@ // if (str.id == 1 && str.pid == 0) { // return str; // } - if (str.type == 1) { + 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); - this.treeData = res; - this.modelLayer = true; - var that = this; - var pickedFeature, pickedColor; - window.modeCatchHandler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); + var res=this.setTreeData(val); + this.treeData=res; + this.modelLayer=true; + var that=this; + var pickedFeature,pickedColor; + window.modeCatchHandler=new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas); window.modeCatchHandler.setInputAction((event) => { - if (pickedColor) { pickedFeature && (pickedFeature.color = pickedColor); } + if(pickedColor) { pickedFeature&&(pickedFeature.color=pickedColor); } - pickedFeature = sgworld.Viewer.scene.pick(event.position); - if (Cesium.defined(pickedFeature)) { - if (pickedFeature.primitive instanceof Cesium.Cesium3DTileset) { + pickedFeature=sgworld.Viewer.scene.pick(event.position); + if(Cesium.defined(pickedFeature)) { + if(pickedFeature.primitive instanceof Cesium.Cesium3DTileset) { - if (pickedFeature) { - pickedColor = pickedFeature.color - pickedFeature.color = Cesium.Color.RED.withAlpha(0.3); + if(pickedFeature) { + pickedColor=pickedFeature.color + pickedFeature.color=Cesium.Color.RED.withAlpha(0.3); that.setShowModelInfo(pickedFeature); } } } - }, Cesium.ScreenSpaceEventType.LEFT_CLICK) + },Cesium.ScreenSpaceEventType.LEFT_CLICK) } }, setTreeData (source) { - let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 + let cloneData=JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕 return cloneData.filter((father) => { // 寰幆鎵�鏈夐」 - let branchArr = cloneData.filter((child) => father.id == child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 - branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� + let branchArr=cloneData.filter((child) => father.id==child.pid); // 瀵规瘮ID锛屽垎鍒笂涓嬬骇鑿滃崟锛屽苟杩斿洖鏁版嵁 + branchArr.length>0? (father.children=branchArr):""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊� // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛� // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋� - return father.pid == 0; // 杩斿洖涓�绾ц彍鍗� + return father.pid==0; // 杩斿洖涓�绾ц彍鍗� }); }, // tileSet(tileset, height) { @@ -1256,10 +1587,11 @@ // tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); // }, getHeight (level) { - if (level > 0 && level < 23) { + if(level>0&&level<23) { return this.levelArray[level] } - return this.levelArray[this.levelArray.length - 1] + var res=7 + return this.levelArray[res] }, }, @@ -1271,6 +1603,7 @@ .previewBox { width: 100%; height: 100%; + .modelLayer { position: absolute; z-index: 40; @@ -1280,16 +1613,47 @@ margin: 10px; max-height: 600px; overflow: auto; + .modelBox { width: 100%; min-height: 24px; } } + + .levelLayer { + position: absolute; + z-index: 40; + padding: 10px 20px; + max-height: 450px; + overflow: auto; + border: 1px solid #409eff; + top: 20%; + left: 50%; + transform: translate(-50%, 0%); + + .levelTitle { + width: 100%; + display: flex; + justify-content: space-between; + font-size: 16px; + font-family: Source Han Sans CN; + } + + .contLayer { + margin: 10px 0px; + font-size: 14px; + font-family: Source Han Sans CN; + display: flex; + justify-content: space-between; + } + } + .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 +1664,15 @@ 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