| | |
| | | :props="defaultProps" |
| | | @node-click="handleNodeClick" |
| | | @check="handleCheckChange" |
| | | @node-contextmenu="rightClick" |
| | | > |
| | | </el-tree> |
| | | </div> |
| | |
| | | <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'" |
| | | 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'" |
| | | 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'" |
| | | 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'" |
| | | 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> |
| | | |
| | | </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> |
| | | |
| | | </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> |
| | | |
| | | </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> |
| | | |
| | | </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> |
| | | |
| | |
| | | <el-tab-pane |
| | | label="属性" |
| | | name="first" |
| | | v-if="serveType" |
| | | > |
| | | <el-form |
| | | ref="form" |
| | |
| | | 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> |
| | | |
| | |
| | | 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> |
| | |
| | | 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> |
| | |
| | | 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> |
| | | |
| | |
| | | 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' |
| | |
| | | info: '', |
| | | icon: '', |
| | | bak: '', |
| | | Id: '' |
| | | Id: '', |
| | | |
| | | }, |
| | | options: [ |
| | | { |
| | |
| | | isJpg: false, |
| | | src: '' |
| | | }, |
| | | modelType: ['ifc', 'fbx', 'rvt', '3dml'], |
| | | modelType: ['ifc', 'fbx', 'rvt', '3dml', 'cpt', 'osgb', 'las', 'laz'], |
| | | editModelFlag: false, |
| | | modelForm: { |
| | | lon: 119, |
| | |
| | | yaw: 0, |
| | | alpha: 1, |
| | | modelid: null, |
| | | west: null, |
| | | south: null, |
| | | east: null, |
| | | north: null, |
| | | scale: 1 |
| | | }, |
| | | app: { |
| | | tileset: null, |
| | |
| | | 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 && |
| | |
| | | } |
| | | |
| | | |
| | | $.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, |
| | |
| | | async getAttacthFlieList() { |
| | | var obj = { |
| | | eventid: this.layerID, |
| | | tabName: "lf.sys_style" |
| | | tabName: this.layerData |
| | | }; |
| | | const res = await comprehensive_selectFiles(obj); |
| | | if (res.code != 200) { |
| | |
| | | |
| | | }, |
| | | handleClose() { |
| | | this.layerData = "lf.sys_style" |
| | | this.serveType = true; |
| | | this.dialogVisible = false; |
| | | this.formInline = { |
| | | title: '', |
| | |
| | | var modelKey = 'id'; |
| | | |
| | | if (result.tileset) { |
| | | if (result.tileSet.pubid > 0) { |
| | | if (result.tileset.pubid && parseInt(result.tileset.pubid) > 0) { |
| | | const data = await comprehensive_selectPubById({ id: result.tileset.pubid }) |
| | | |
| | | if (data.code != 200) { |
| | | return |
| | | } else { |
| | |
| | | } |
| | | this.formInline.Id = result.getProperty(modelKey); |
| | | this.layerID = result.getProperty(modelKey); |
| | | |
| | | } |
| | | } else { |
| | | var id = '3dml' + result.primitive.id; |
| | |
| | | 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.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) { |
| | |
| | | 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" || res.serveType == "3DML") { |
| | | 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, // 减少离相机较远的屏幕空间错误:false |
| | | skipLevelOfDetail: true, // 在遍历时候跳过详情:false |
| | |
| | | ); |
| | | var that = this; |
| | | tileset.readyPromise.then((tileset) => { |
| | | tileset.id = res.cnName; |
| | | tileset.layerId = res.id; |
| | | tileset.pubid = res.pubid; |
| | | if (res.serveType != '3DML') { |
| | | 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 { |
| | | |
| | | if (res.serveType != '3DML') { |
| | | this.tileSet(tileset, parseFloat(res.elev)) |
| | | 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)) |
| | | |
| | | } |
| | | }, |
| | |
| | | } |
| | | }, |
| | | 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) { |
| | |
| | | // Viewer.camera.flyTo({ |
| | | // destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000), |
| | | // }); |
| | | |
| | | if (is_production) { |
| | | Viewer.imageryLayers.removeAll(); |
| | | } |
| | | Viewer._enableInfoOrSelection = false; |
| | | //显示fps |
| | | Viewer.scene.debugShowFramesPerSecond = 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) |
| | | } |
| | | |
| | | 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"); |
| | | // 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: demLayer |
| | | }); |
| | | var option = { |
| | | url: window.sceneConfig.SGUrl, |
| | | layerName: window.sceneConfig.mptName, |
| | | requestVertexNormals: true, |
| | | }; |
| | | window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); |
| | | window.terrainFlag = '2' |
| | | // window.terrainLayer = new Cesium.CesiumTerrainProvider({ |
| | | // url: demLayer |
| | | // }); |
| | | |
| | | Viewer.terrainProvider = window.terrainLayer |
| | | // 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.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 |
| | | } |
| | | }); |
| | | });*/ |
| | | |
| | | 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]) |
| | |
| | | Viewer.camera.flyTo({ |
| | | destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height), |
| | | }); |
| | | } else if (type == '3dml' || type == 'fbx' || type == 'ifc' || type == 'rvt') { |
| | | } 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(); |
| | | } |
| | |
| | | }, |
| | | |
| | | 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('数据保存失败'); |
| | |
| | | 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); |
| | | |
| | |
| | | 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.modelForm.lat = y; |
| | | that.modelForm.height = z; |
| | | that.pickupCoords(); |
| | | that.reload(); |
| | | |
| | | }, Cesium.ScreenSpaceEventType.LEFT_CLICK); |
| | | }, |
| | | // 保留小数位 |
| | |
| | | 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) |
| | | }, |
| | |
| | | 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; |
| | | }, |
| | |
| | | }, |
| | | //显隐 |
| | | showTileset() { |
| | | |
| | | if (!this.app.tileset) return; |
| | | this.app.tileset.show = !this.app.tileset.show; |
| | | }, |
| | |
| | | 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, |
| | |
| | | }); |
| | | }, |
| | | setEditModelLayer(res) { |
| | | this.editModelFlag = true; |
| | | |
| | | if (res.json) { |
| | | |
| | | var json = JSON.parse(res.json) |
| | | this.modelForm = json; |
| | | this.reload(); |
| | |
| | | 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); |
| | |
| | | .previewBox { |
| | | width: 100%; |
| | | height: 100%; |
| | | |
| | | .modelLayer { |
| | | position: absolute; |
| | | z-index: 40; |
| | |
| | | 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; |
| | |
| | | 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> |