图层控制增加全部关闭按钮,图层双击自动定位到对应位置,信令数据的时间条美化下,对接UE视频流,数字人功能开启,逻辑单体化数据体现
| | |
| | | <template> |
| | | <div |
| | | @click="showLeftMenu" |
| | | :class="{ leftmenu: !isShowLeftPanel, leftmenu_active: isShowLeftPanel }" |
| | | class="leftmenustyle" |
| | | > |
| | | <div @click="showLeftMenu" :class="{ leftmenu: !isShowLeftPanel, leftmenu_active: isShowLeftPanel }" |
| | | class="leftmenustyle"> |
| | | <span class="closeLeftMenu" v-if="isShowLeftPanel" @click.stop="hideLeftMenu">Ã</span> |
| | | <img class="openLeftMenu" v-else src="@/assets/img/left/souselist4.png" /> |
| | | <div class="layerTreeContainer" v-show="isShowLeftPanel"> |
| | |
| | | <!-- <div @click="setTreeDataChange(1)">ä¸å¡</div> |
| | | <div @click="setTreeDataChange(2)">ä¸å¡</div>--> |
| | | </div> |
| | | |
| | | <hr /> |
| | | <!-- <div style="padding: 5px"> |
| | | <el-button size="small" @click="setTreeDataChange(1)">å¾å±1</el-button> |
| | | <el-button size="small" @click="setTreeDataChange(2)">å¾å±2</el-button> |
| | | </div>--> |
| | | <div class="layerTree"> |
| | | <el-tree |
| | | :data="treeData" |
| | | node-key="id" |
| | | ref="tree" |
| | | :default-checked-keys="arr" |
| | | style="min-width: 160px" |
| | | show-checkbox |
| | | :render-content="renderContent" |
| | | :default-expanded-keys="defaultExpanded" |
| | | @check="check" |
| | | :filter-node-method="filterNode" |
| | | ></el-tree> |
| | | <el-tree :data="treeData" node-key="id" ref="tree" :default-checked-keys="arr" style="min-width: 160px" |
| | | show-checkbox :render-content="renderContent" :default-expanded-keys="defaultExpanded" @check="check" |
| | | @node-click="handleNodeDoubleClick" :filter-node-method="filterNode"></el-tree> |
| | | </div> |
| | | |
| | | <hr /> |
| | | <div class="canelAllCheck"> |
| | | <el-link type="info" @click="setClearAllCheck()" style="color:white;font-size: 14px;">åæ¶å
¨é¨æé</el-link> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | import { getmenu } from "../../api/api"; |
| | | import keys from "@/assets/poiKeys1"; |
| | | import store from "@/utils/store"; |
| | | |
| | | |
| | | let colorTool; |
| | | let projectTreeData = []; |
| | |
| | | console.log("è·åæ ·å¼é
置失败ï¼"); |
| | | } |
| | | ) |
| | | .catch(function(error) { |
| | | .catch(function (error) { |
| | | console.log(error); |
| | | }); |
| | | return de; |
| | |
| | | this.setVisiable(treeNode.data, isCheck); |
| | | } |
| | | }, |
| | | handleNodeDoubleClick(data, node, event) { |
| | | if (data.flyTo) { |
| | | const coord = data.flyTo; |
| | | sgworld.Navigate.flyToPointsInterest({ |
| | | destination: Cesium.Cartesian3.fromDegrees( |
| | | coord[0], |
| | | coord[1], |
| | | coord[2] |
| | | ), |
| | | orientation: { |
| | | heading: Cesium.Math.toRadians(coord[3] ? coord[3] : -90), |
| | | pitch: Cesium.Math.toRadians(coord[4] ? coord[4] : 0), |
| | | roll: Cesium.Math.toRadians(0.0) |
| | | }, |
| | | duration: 2 //é£è¡æ¶é´8s |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | setClearAllCheck() { |
| | | // let treeNode = this.$refs.tree.getNode(1); |
| | | // if (treeNode && treeNode.data) { |
| | | // this.setVisiable(treeNode, false); |
| | | // } |
| | | const nodes = this.$refs.tree.getCheckedNodes(); |
| | | const ids = ["18B25A94", "47EC9636"]; |
| | | const checkId = []; |
| | | nodes.map(item => { |
| | | if (ids.indexOf(item.id) > -1) { |
| | | checkId.push(item.id) |
| | | } else { |
| | | this.setVisiable(item, false) |
| | | } |
| | | }) |
| | | this.$refs.tree.setCheckedKeys(checkId); |
| | | }, |
| | | check(treeNode, data) { |
| | | //å
³éå³ä¾§ä¿¡æ¯å¼¹çª |
| | | Bus.$emit("closeRightPop", true); |
| | |
| | | height: 310, |
| | | url: "./static/html/layerProp.html", |
| | | fn: { |
| | | end: function() {} |
| | | end: function () { } |
| | | } |
| | | }); |
| | | } else if (data._children) { |
| | |
| | | rectangle: Cesium.Rectangle.MAX_VALUE |
| | | }); |
| | | if (treeNode.addLevel && treeNode.addLevel === 2) { |
| | | geotil.positionToTileXY = function(position, level, result) { |
| | | geotil.positionToTileXY = function (position, level, result) { |
| | | level > 0 && level++; |
| | | var rectangle = this._rectangle; |
| | | if (!Cesium.Rectangle.contains(rectangle, position)) { |
| | |
| | | result.y = yTileCoordinate; |
| | | return result; |
| | | }; |
| | | geotil.tileXYToRectangle = function(x, y, level, result) { |
| | | geotil.tileXYToRectangle = function (x, y, level, result) { |
| | | level > 0 && level++; |
| | | var rectangle = this._rectangle; |
| | | |
| | |
| | | axios |
| | | .get( |
| | | treeNode.urls + |
| | | "?version=1.3.0&request=GetFeature&format=json&typename=" + |
| | | treeNode.layer |
| | | "?version=1.3.0&request=GetFeature&format=json&typename=" + |
| | | treeNode.layer |
| | | ) |
| | | .then(data => { |
| | | let features = data.data.features; |
| | |
| | | de, |
| | | "0", |
| | | true, |
| | | function(data) { |
| | | function (data) { |
| | | if (treeNode.flow) { |
| | | let lines = data.entities.values; |
| | | lines.forEach(line => { |
| | |
| | | clampToGround: sgworld.Core.defaultValue( |
| | | treeNode.clampToGround, |
| | | treeNode.extrudedHeight === undefined && |
| | | treeNode.height === undefined |
| | | treeNode.height === undefined |
| | | ), |
| | | classificationType: treeNode.classificationType, |
| | | near: sgworld.Core.defaultValue(treeNode.near, 0), |
| | |
| | | de, |
| | | "0", |
| | | treeNode.checked, |
| | | function() {} |
| | | function () { } |
| | | ); |
| | | } else if (treeNode.class === "polylineVolume") { |
| | | de = { |
| | |
| | | de, |
| | | "0", |
| | | treeNode.checked, |
| | | function() {} |
| | | function () { } |
| | | ); |
| | | } else if (treeNode.class === "polyline") { |
| | | de = { |
| | |
| | | de, |
| | | "0", |
| | | treeNode.checked, |
| | | function() {} |
| | | function () { } |
| | | ); |
| | | } else if (treeNode.class === "polygon") { |
| | | de = { |
| | |
| | | de, |
| | | "0", |
| | | treeNode.checked, |
| | | function() {} |
| | | function () { } |
| | | ); |
| | | } else if (treeNode.class === "model") { |
| | | de = { |
| | |
| | | de, |
| | | "0", |
| | | treeNode.checked, |
| | | function() {} |
| | | function () { } |
| | | ); |
| | | } |
| | | layer && (treeNode.id = layer.treeobj.id); |
| | |
| | | layer = sgworld.Creator.createS3MLayer( |
| | | treeNode.urls, |
| | | sgworld._Viewer.scene, |
| | | function() {} |
| | | function () { } |
| | | ); |
| | | break; |
| | | case "gltf": |
| | |
| | | let imgUrl; |
| | | new Cesium.GeoJsonDataSource.load( |
| | | treeNode.urls + |
| | | "?version=1.3.0&request=GetFeature&format=json&typename=" + |
| | | treeNode.layer |
| | | "?version=1.3.0&request=GetFeature&format=json&typename=" + |
| | | treeNode.layer |
| | | ).then(dataSource => { |
| | | // that.$set(treeNode, "disabled", false); |
| | | Viewer.dataSources.add(dataSource); |
| | |
| | | }); |
| | | |
| | | // æ·»å çå¬å½æ° |
| | | dataSource.clustering.clusterEvent.addEventListener(function( |
| | | dataSource.clustering.clusterEvent.addEventListener(function ( |
| | | clusteredEntities, |
| | | cluster |
| | | ) { |
| | |
| | | transition: 1s; |
| | | z-index: 9999; |
| | | } |
| | | |
| | | .switchbox { |
| | | margin-top: 5px; |
| | | } |
| | | |
| | | .closeLeftMenu:hover { |
| | | cursor: pointer; |
| | | transform: rotateZ(90deg); |
| | | } |
| | | |
| | | .canelAllCheck { |
| | | |
| | | flex: end; |
| | | } |
| | | |
| | | .layerTree { |
| | | flex: 1; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .layerTree .el-tree /deep/ .el-checkbox__inner { |
| | |
| | | .leftmenu:hover { |
| | | background-image: url("~@/assets/img/new/treeClose-y.png"); |
| | | } |
| | | |
| | | .leftmenu { |
| | | background-image: url("~@/assets/img/new/treeClose.png"); |
| | | background-size: 100% 100%; |
| | |
| | | width: 270px; |
| | | height: 550px; |
| | | overflow: hidden; |
| | | display: flex; |
| | | flex-direction: column; |
| | | /* margin: 20px 0; */ |
| | | } |
| | | |
| | |
| | | background-color: rgba(255, 255, 255, 0.4) !important; |
| | | } |
| | | |
| | | .el-tree /deep/ .is-current > .el-tree-node__content { |
| | | .el-tree /deep/ .is-current>.el-tree-node__content { |
| | | background-color: rgba(255, 255, 255, 0.4) !important; |
| | | font-size: 14px; |
| | | } |
| | |
| | | <template> |
| | | <div class="specialTool"> |
| | | <div |
| | | class="bottomwrapper" |
| | | :class="{ 'top-btn-active': viewer1Show && isLand }" |
| | | > |
| | | <div class="bottomwrapper" :class="{ 'top-btn-active': viewer1Show && isLand }"> |
| | | <div class="imgbox" @click="tdglHandle"> |
| | | <img src="@assets/img/new/tudiguanli.png" alt="" /> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div |
| | | class="bottomwrapper" |
| | | @click="historyHandle" |
| | | :class="{ 'top-btn-active': viewer1Show && !isLand }" |
| | | > |
| | | <div class="bottomwrapper" @click="historyHandle" :class="{ 'top-btn-active': viewer1Show && !isLand }"> |
| | | <div class="imgbox"> |
| | | <img src="@assets/img/new/chengshigengxin.png" alt="" /> |
| | | </div> |
| | |
| | | <span> åå²å½±å </span> |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="bottomwrapper csbj" |
| | | @click="spjkHandle" |
| | | :class="{ 'top-btn-active': !isShowSPJK }" |
| | | > |
| | | <div class="bottomwrapper csbj" @click="spjkHandle" :class="{ 'top-btn-active': !isShowSPJK }"> |
| | | <div class="imgbox"> |
| | | <img src="@assets/img/new/spjk.png" alt="" /> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div |
| | | class="bottomwrapper spjk" |
| | | @click="shoujixinling" |
| | | :class="{ 'top-btn-active': !isShowSjxl }" |
| | | > |
| | | <div class="bottomwrapper spjk" @click="shoujixinling" :class="{ 'top-btn-active': !isShowSjxl }"> |
| | | <div class="imgbox"> |
| | | <img src="@assets/img/new/sjxl.png" alt="" /> |
| | | </div> |
| | |
| | | <div class="textbox"> |
| | | <span> 精模示è </span> |
| | | </div> |
| | | <el-dropdown-menu |
| | | slot="dropdown" |
| | | :append-to-body="false" |
| | | class="popper-dropdown" |
| | | > |
| | | <el-dropdown-menu slot="dropdown" :append-to-body="false" class="popper-dropdown"> |
| | | <el-dropdown-item command="fcfhHandle">åå±åæ·</el-dropdown-item> |
| | | <!-- <el-dropdown-item command="sprhHandle">åºæ¯è§é¢èå</el-dropdown-item> --> |
| | | <el-dropdown-item v-if="isShowSPRH" command="jiqirendahui" |
| | | >åºæ¯è§é¢èå</el-dropdown-item |
| | | > |
| | | <el-dropdown-item v-else command="jiqirendahui" |
| | | >å
³éè§é¢èå</el-dropdown-item |
| | | > |
| | | <el-dropdown-item v-if="isShowSPRH" command="jiqirendahui">åºæ¯è§é¢èå</el-dropdown-item> |
| | | <el-dropdown-item v-else command="jiqirendahui">å
³éè§é¢èå</el-dropdown-item> |
| | | <el-dropdown-item command="gkshHandle">é«å¯è§å模å</el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </div> |
| | |
| | | @input="updateVideo" |
| | | > |
| | | </el-slider> --> |
| | | <el-slider |
| | | :min="0" |
| | | :max="360" |
| | | v-model="robotVideoList[3].heading" |
| | | @input="updateVideo" |
| | | > |
| | | <el-slider :min="0" :max="360" v-model="robotVideoList[3].heading" @input="updateVideo"> |
| | | </el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="俯仰è§åº¦:"> |
| | | <el-slider |
| | | :min="-89" |
| | | :max="89" |
| | | v-model="robotVideoList[3].pitch" |
| | | @input="updateVideo" |
| | | > |
| | | <el-slider :min="-89" :max="89" v-model="robotVideoList[3].pitch" @input="updateVideo"> |
| | | </el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="æ°´å¹³è§è§:"> |
| | | <el-slider |
| | | :min="30" |
| | | :max="120" |
| | | v-model="robotVideoList[3].horizonAngle" |
| | | @input="updateVideo" |
| | | > |
| | | <el-slider :min="30" :max="120" v-model="robotVideoList[3].horizonAngle" @input="updateVideo"> |
| | | </el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="åç´è§è§:"> |
| | | <el-slider |
| | | :min="30" |
| | | :max="120" |
| | | v-model="robotVideoList[3].verticalAngle" |
| | | @input="updateVideo" |
| | | > |
| | | <el-slider :min="30" :max="120" v-model="robotVideoList[3].verticalAngle" @input="updateVideo"> |
| | | </el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="æè¿æå°:"> |
| | | <el-slider |
| | | :min="100" |
| | | :max="300" |
| | | v-model="robotVideoList[3].far" |
| | | @input="updateVideo" |
| | | > |
| | | <el-slider :min="100" :max="300" v-model="robotVideoList[3].far" @input="updateVideo"> |
| | | </el-slider> |
| | | </el-form-item> |
| | | <el-form-item label="éæåº¦:"> |
| | | <el-slider |
| | | :step="0.1" |
| | | :min="0" |
| | | :max="1" |
| | | v-model="robotVideoList[3].alpha" |
| | | @input="updateVideo" |
| | | > |
| | | <el-slider :step="0.1" :min="0" :max="1" v-model="robotVideoList[3].alpha" @input="updateVideo"> |
| | | </el-slider> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <div class="SZRtextAreaBox" v-if="isShowTextArea"> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="19"> |
| | | <el-input |
| | | v-model="input" |
| | | placeholder="请è¾å
¥å
容" |
| | | clearable |
| | | @keyup.enter.native="sendCommand($event)" |
| | | ></el-input> |
| | | <el-input v-model="input" placeholder="请è¾å
¥å
容" clearable @keyup.enter.native="sendCommand($event)"></el-input> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-button type="primary" @click="sendCommand('click')" |
| | | >æç´¢</el-button |
| | | > |
| | | <el-button type="primary" @click="sendCommand('click')">æç´¢</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .SZRtextAreaBox { |
| | | background: rgba(5, 39, 126, 0.7); |
| | | padding: 10px; |
| | |
| | | transform: translateX(-50%); |
| | | z-index: 99999; |
| | | } |
| | | |
| | | .SZRtextAreaBox .el-form-item { |
| | | margin: 0; |
| | | } |
| | | |
| | | .SZRtextAreaBox .el-input { |
| | | /* width: 300px; */ |
| | | } |
| | | |
| | | .specialTool .bottomwrapper:nth-of-type(3) { |
| | | /* background: red; */ |
| | | position: relative; |
| | |
| | | } |
| | | |
| | | .jxmx .el-dropdown-menu { |
| | | top: -110px !important; |
| | | top: -133px !important; |
| | | left: -26.5% !important; |
| | | } |
| | | |
| | |
| | | case "bzdSystem": |
| | | this.bzdSystem(); |
| | | break; |
| | | |
| | | case "gkshHandle": |
| | | window.open('http://10.128.12.160:8002/') |
| | | break; |
| | | case "fcfhHandle": |
| | | this.fencengfenhu(); |
| | | break; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="signalling"> |
| | | <div class="signalling_describe">åä½ï¼ä¸äºº</div> |
| | | <div> |
| | | <ul class="signalling_ul"> |
| | | <li class="signalling_node" :class="{ signalling_active: i == selectIndex }" v-for="(item, i) in time" |
| | | @click="changeTime(i)"> |
| | | <div class="signalling_value">{{ Math.round(value[i] / 10000) }}</div> |
| | | <div class="signalling_symbol"></div> |
| | | <div class="signalling_time">{{ item }}</div> |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | <div class="signalling_play" @click="signallingPlay()"> |
| | | <img src="~@/assets/img/new/rightArrow.png" /> |
| | | </div> |
| | | <div class="signalling_type"> |
| | | <el-radio-group v-model="type" @change="changeType"> |
| | | <el-radio-button label="çå"></el-radio-button> |
| | | <el-radio-button label="æ±ç¶"></el-radio-button> |
| | | <el-radio-button label="ç½æ ¼"></el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <style> |
| | | .signalling_type .el-radio-group { |
| | | line-height: 0px !important; |
| | | color: white !important; |
| | | } |
| | | |
| | | .signalling_type .el-radio-group { |
| | | height: 30px !important; |
| | | } |
| | | |
| | | .signalling_type .el-radio-button__inner { |
| | | background: rgba(0, 132, 255, 0.8) !important; |
| | | border: none !important; |
| | | color: white !important; |
| | | height: 30px !important; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | .signalling_type .el-radio-button__orig-radio:checked+.el-radio-button__inner { |
| | | background: rgba(255, 136, 0, 0.8) !important; |
| | | } |
| | | </style> |
| | | <style scoped> |
| | | .signalling { |
| | | position: absolute; |
| | | left: 50%; |
| | | margin-left: -650px; |
| | | bottom: 230px; |
| | | color: white; |
| | | width: 1300px; |
| | | z-index: 9999999; |
| | | pointer-events: all; |
| | | } |
| | | |
| | | .signalling_type { |
| | | |
| | | position: absolute; |
| | | right: 130px; |
| | | top: 120px; |
| | | } |
| | | |
| | | .signalling_describe { |
| | | position: absolute; |
| | | right: 0px; |
| | | top: 110px; |
| | | } |
| | | |
| | | .signalling_play { |
| | | position: absolute; |
| | | left: 0px; |
| | | top: 110px; |
| | | width: 48px; |
| | | height: 48px; |
| | | cursor: pointer; |
| | | border-radius: 32px; |
| | | border: 1px solid #fff; |
| | | } |
| | | |
| | | .signalling_play img { |
| | | width: 32px; |
| | | height: 32px; |
| | | margin: 8px 6px 8px 10px; |
| | | |
| | | } |
| | | |
| | | .signalling_ul {} |
| | | |
| | | .signalling_node { |
| | | float: left; |
| | | width: 40px; |
| | | margin: 2.5px 7px; |
| | | list-style: none; |
| | | cursor: pointer; |
| | | |
| | | } |
| | | |
| | | .signalling_value, |
| | | .signalling_symbol, |
| | | .signalling_time { |
| | | width: 40px; |
| | | text-align: center; |
| | | |
| | | } |
| | | |
| | | .signalling_symbol { |
| | | height: 5px; |
| | | background-color: rgb(0, 132, 255); |
| | | border-radius: 2px; |
| | | } |
| | | |
| | | .signalling_node:hover .signalling_symbol { |
| | | background-color: rgb(255, 136, 0) !important; |
| | | } |
| | | |
| | | .signalling_node:hover { |
| | | color: rgb(255, 136, 0) !important; |
| | | } |
| | | |
| | | .signalling_active { |
| | | color: rgb(255, 136, 0) !important; |
| | | } |
| | | |
| | | .signalling_active .signalling_symbol { |
| | | background-color: rgb(255, 136, 0) !important; |
| | | } |
| | | </style> |
| | | <script> |
| | | |
| | | export default { |
| | | name: "signalling", |
| | | components: { |
| | | |
| | | }, |
| | | data() { |
| | | return { |
| | | type: "çå", |
| | | play: false, |
| | | selectIndex: 0, |
| | | time: ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"], |
| | | value: [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23] |
| | | }; |
| | | }, |
| | | beforeDestroy() { |
| | | removeDataRender(); |
| | | removeGrid(); |
| | | }, |
| | | mounted() { |
| | | let that = this; |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: "ä¿¡ä»¤æ°æ®å è½½ä¸ï¼è¯·ç¨å", |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | window.requestData(function () { |
| | | that.value = signallingData.count; |
| | | loading.close(); |
| | | }); |
| | | }, |
| | | methods: { |
| | | changeType(val) { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: "ä¿¡ä»¤æ°æ®å è½½ä¸ï¼è¯·ç¨å", |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | this.play = false; |
| | | if (val == "çå") { |
| | | removeGrid(); |
| | | dataDraw(); |
| | | } else if (val == "æ±ç¶") { |
| | | setDataRenderVisible(false); |
| | | removeGrid(); |
| | | dataGrid(true); |
| | | } else if (val == "ç½æ ¼") { |
| | | setDataRenderVisible(false); |
| | | removeGrid(); |
| | | dataGrid(false); |
| | | } |
| | | loading.close(); |
| | | }, |
| | | changeTime(id) { |
| | | this.play = false; |
| | | this.selectIndex = id; |
| | | if (this.type == "çå") { |
| | | signallingData.selectid = id; |
| | | } else if (this.type == "æ±ç¶") { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: "ä¿¡ä»¤æ°æ®å è½½ä¸ï¼è¯·ç¨å", |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | signallingData.selectid = id; |
| | | updateDataGrid(true); |
| | | loading.close(); |
| | | } else if (this.type == "ç½æ ¼") { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: "ä¿¡ä»¤æ°æ®å è½½ä¸ï¼è¯·ç¨å", |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | signallingData.selectid = id; |
| | | updateDataGrid(false); |
| | | loading.close(); |
| | | } |
| | | }, |
| | | modify() { |
| | | if (signallingData.selectid == list.length - 1) { |
| | | signallingData.selectid = 0; |
| | | } else { |
| | | signallingData.selectid++; |
| | | } |
| | | this.selectIndex = signallingData.selectid; |
| | | setTimeout(() => { |
| | | if (this.play) { |
| | | this.modify(); |
| | | } |
| | | }, 300); |
| | | }, |
| | | signallingPlay() { |
| | | if (this.type == "çå") { |
| | | this.play = !this.play; |
| | | if (this.play) { |
| | | this.modify(); |
| | | } |
| | | } |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | <template> |
| | | <div class="signalling"> |
| | | <div class="signalling_describe">åä½ï¼ä¸äºº</div> |
| | | <div class="signaHeader"> |
| | | <div> |
| | | <el-radio-group v-model="type" @change="changeType"> |
| | | <el-radio-button label="çå"></el-radio-button> |
| | | <el-radio-button label="æ±ç¶"></el-radio-button> |
| | | <el-radio-button label="ç½æ ¼"></el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | |
| | | <div> |
| | | <label>{{ sliderLabel }}</label> |
| | | <label>åä½ï¼ä¸äºº</label> |
| | | </div> |
| | | </div> |
| | | <div class="signaSlider"> |
| | | |
| | | <el-slider v-model="sliderValue" @change="handleSliderChange" :format-tooltip="formatTooltip" |
| | | :marks="silderMark" :step="1" :min="0" :max="47" show-stops> |
| | | </el-slider> |
| | | </div> |
| | | <div class="signaButton"> |
| | | <div class="signalling_play" @click="signallingPlay()"> |
| | | <img src="~@/assets/img/new/rightArrow.png" /> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="signalling_describe">åä½ï¼ä¸äºº</div> |
| | | <div> |
| | | <ul class="signalling_ul"> |
| | | <li class="signalling_node" :class="{ signalling_active: i == selectIndex }" v-for="(item, i) in time" |
| | |
| | | </li> |
| | | </ul> |
| | | </div> |
| | | <div class="signalling_play" @click="signallingPlay()"> |
| | | <img src="~@/assets/img/new/rightArrow.png" /> |
| | | </div> |
| | | |
| | | <div class="signalling_type"> |
| | | <el-radio-group v-model="type" @change="changeType"> |
| | | <el-radio-button label="çå"></el-radio-button> |
| | | <el-radio-button label="æ±ç¶"></el-radio-button> |
| | | <el-radio-button label="ç½æ ¼"></el-radio-button> |
| | | </el-radio-group> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </template> |
| | | <style> |
| | |
| | | .signalling { |
| | | position: absolute; |
| | | left: 50%; |
| | | margin-left: -650px; |
| | | transform: translateX(-50%); |
| | | bottom: 230px; |
| | | color: white; |
| | | width: 1300px; |
| | | z-index: 9999999; |
| | | pointer-events: all; |
| | | background-image: url("~@/assets/img/new/listbg.png"); |
| | | background-size: 100% 100%; |
| | | padding: 20px 10px; |
| | | border-radius: 10px; |
| | | } |
| | | |
| | | .signaHeader { |
| | | display: flex; |
| | | |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | /* color: #409EFF; */ |
| | | } |
| | | |
| | | .signaSlider { |
| | | margin: 20px 20px; |
| | | } |
| | | |
| | | .signaButton { |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | |
| | | |
| | | .signalling_type { |
| | | |
| | |
| | | } |
| | | |
| | | .signalling_play { |
| | | position: absolute; |
| | | /* position: absolute; |
| | | left: 0px; |
| | | top: 110px; |
| | | width: 48px; |
| | | height: 48px; |
| | | top: 110px; */ |
| | | width: 24px; |
| | | height: 24px; |
| | | cursor: pointer; |
| | | border-radius: 32px; |
| | | border: 1px solid #fff; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | |
| | | .signalling_play img { |
| | | width: 32px; |
| | | height: 32px; |
| | | width: 16px; |
| | | height: 16px; |
| | | margin: 8px 6px 8px 10px; |
| | | |
| | | } |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | sliderLabel: '', |
| | | silderMark: {}, |
| | | sliderFLag: false, |
| | | sliderMax: 0, |
| | | sliderValue: 0, |
| | | type: "çå", |
| | | play: false, |
| | | selectIndex: 0, |
| | |
| | | removeDataRender(); |
| | | removeGrid(); |
| | | }, |
| | | |
| | | mounted() { |
| | | let that = this; |
| | | const loading = this.$loading({ |
| | |
| | | window.requestData(function () { |
| | | that.value = signallingData.count; |
| | | loading.close(); |
| | | that.getMarks(); |
| | | |
| | | }); |
| | | |
| | | |
| | | }, |
| | | methods: { |
| | | formatTooltip(res) { |
| | | var val = this.value[res] / 10000; |
| | | return this.time[res] + " : " + Math.round(parseFloat(val)); |
| | | |
| | | }, |
| | | getForMate(res) { |
| | | var val = this.value[res] / 10000; |
| | | return "æ¶é´ï¼ " + this.time[res] + " " + " å¼ï¼" + Math.round(parseFloat(val)); |
| | | }, |
| | | getMarks() { |
| | | this.sliderLabel = this.getForMate(0) |
| | | for (var i = 0; i < this.time.length; i++) { |
| | | if (i % 2 == 0) { |
| | | const key = i; |
| | | const value = this.time[i]; |
| | | this.$set(this.silderMark, key, { |
| | | style: { |
| | | color: '#FFFFFF' |
| | | }, |
| | | label: value |
| | | }); // ä½¿ç¨ Vue.set 触åè§å¾æ´æ° |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | this.sliderFLag = true |
| | | |
| | | }, |
| | | handleSliderChange(val) { |
| | | this.play = false; |
| | | |
| | | |
| | | this.$nextTick(() => { |
| | | this.changeTime(val) |
| | | }) |
| | | |
| | | }, |
| | | |
| | | changeType(val) { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | |
| | | spinner: "el-icon-loading", |
| | | background: "rgba(0, 0, 0, 0.7)", |
| | | }); |
| | | this.sliderLabel = this.getForMate(0) |
| | | this.sliderValue = 0; |
| | | this.play = false; |
| | | if (val == "çå") { |
| | | removeGrid(); |
| | |
| | | } else { |
| | | signallingData.selectid++; |
| | | } |
| | | this.sliderValue = this.selectIndex; |
| | | this.selectIndex = signallingData.selectid; |
| | | setTimeout(() => { |
| | | if (this.play) { |
| | |
| | | this.$store.commit("description", obj); |
| | | } |
| | | |
| | | else if ( |
| | | else if (nPickFeature.id && |
| | | nPickFeature.id.fid && |
| | | nPickFeature.id.fid.includes("å
è´¹ä½æç©ºé´0131") |
| | | ) { |
| | |
| | | layuiLayer.close(SmartEarthPopupData.layerProp); |
| | | this.$store.commit("description", obj); |
| | | } |
| | | // else if (nPickFeature.primitive instanceof Cesium.Cesium3DTileset) { |
| | | // // let cartographic = |
| | | // // window.Viewer.scene.globe.ellipsoid.cartesianToCartographic( |
| | | // // nPickFeature.content.tile.boundingSphere.center |
| | | // // ); |
| | | // // let lon = Cesium.Math.toDegrees(cartographic.longitude); |
| | | // // let lat = Cesium.Math.toDegrees(cartographic.latitude); |
| | | // let p = sgworld.Navigate.getMouseDegrees(event); |
| | | // let lon = p.lon; |
| | | // let lat = p.lat; |
| | | // axios |
| | | // .get( |
| | | // "http://10.10.4.121:8070/gisserver/wfsserver/yizhuang-building-wfs-1207", |
| | | // { |
| | | // params: { |
| | | // version: "1.3.0", |
| | | // request: "GetFeature", |
| | | // typename: `亦åºå»ºçå¤è½®å»4326`, |
| | | // propertyname: "*", |
| | | // format: "json", |
| | | // filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><ogc:Intersects><ogc:PropertyName>SAHEP</ogc:PropertyName><gml:Point > <gml:pos>${lon} ${lat}</gml:pos></gml:Point></ogc:Intersects></ogc:Filter>` |
| | | // } |
| | | // } |
| | | // ) |
| | | // .then(response => { |
| | | // if (response.data.features.length > 0) { |
| | | // var geometry = []; |
| | | // let POIs = response.data.features[0].geometry.coordinates[0]; |
| | | // for (let i = 0; i < POIs.length; i++) { |
| | | // geometry.push({ |
| | | // x: parseFloat(POIs[i][0]), |
| | | // y: parseFloat(POIs[i][1]), |
| | | // z: 0 |
| | | // }); |
| | | // } |
| | | // buildingPolygon = sgworld.Creator.createPolygon( |
| | | // geometry, |
| | | // { |
| | | // fillColor: "#00ff0050", |
| | | // outlineColor: "#ff0000", |
| | | // outlineWidth: 2 |
| | | // }, |
| | | // 1, |
| | | // 0, |
| | | // "é¢" |
| | | // ); |
| | | // } |
| | | // }); |
| | | // } |
| | | else if (nPickFeature.primitive instanceof Cesium.Cesium3DTileset) { |
| | | // let cartographic = |
| | | // window.Viewer.scene.globe.ellipsoid.cartesianToCartographic( |
| | | // nPickFeature.content.tile.boundingSphere.center |
| | | // ); |
| | | // let lon = Cesium.Math.toDegrees(cartographic.longitude); |
| | | // let lat = Cesium.Math.toDegrees(cartographic.latitude); |
| | | |
| | | let p = sgworld.Navigate.getMouseDegrees(event); |
| | | let lon = p.lon; |
| | | let lat = p.lat; |
| | | |
| | | |
| | | axios |
| | | .get( |
| | | "http://10.10.4.121:8070/gisserver/wfsserver/yizhuang-buliding-wfs", |
| | | { |
| | | params: { |
| | | version: "1.3.0", |
| | | request: "GetFeature", |
| | | typename: `åä½åSHP20241029_wgs84`, |
| | | propertyname: "*", |
| | | format: "json", |
| | | filter: `<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><ogc:Intersects><ogc:PropertyName>SAHEP</ogc:PropertyName><gml:Point > <gml:pos>${lon} ${lat}</gml:pos></gml:Point></ogc:Intersects></ogc:Filter>` |
| | | } |
| | | } |
| | | ) |
| | | .then(response => { |
| | | if (response.data.features.length > 0) { |
| | | var geometry = []; |
| | | let POIs = response.data.features[0].geometry.coordinates[0]; |
| | | tooltipHTML = ""; |
| | | |
| | | for (let i in response.data.features[0].properties) { |
| | | let value = response.data.features[0].properties[i]; |
| | | |
| | | |
| | | value && (tooltipHTML += `<p>${i}ï¼${value || "æ "}</p>`); |
| | | } |
| | | |
| | | // if (tooltip) { |
| | | // tooltip.show(false); |
| | | // tooltip = null; |
| | | // } |
| | | var tooltip = sgworld.Core.CreateResultTooltip(window.Viewer, { |
| | | color: "black", |
| | | addY: 0, |
| | | far: 200000, |
| | | closeBtn: true, |
| | | close: () => { |
| | | if (buildingPolygon) { |
| | | sgworld.Creator.DeleteObject(buildingPolygon); |
| | | buildingPolygon = null; |
| | | } |
| | | }, |
| | | }); |
| | | console.log(tooltipHTML); |
| | | |
| | | let description = `<div style=' border: 1px solid #fff;border-radius: 5px;background: rgba(0, 0, 0, 0.8);color: #fff;padding: 15px;'>${tooltipHTML}</div>`; |
| | | tooltip.showAt( |
| | | Cesium.Cartesian3.fromDegrees(p.lon, p.lat, 0), |
| | | description |
| | | ); |
| | | for (let i = 0; i < POIs.length; i++) { |
| | | geometry.push({ |
| | | x: parseFloat(POIs[i][0]), |
| | | y: parseFloat(POIs[i][1]), |
| | | z: 0 |
| | | }); |
| | | } |
| | | buildingPolygon = sgworld.Creator.createPolygon( |
| | | geometry, |
| | | { |
| | | fillColor: "#00ff0050", |
| | | outlineColor: "#ff0000", |
| | | outlineWidth: 2 |
| | | }, |
| | | 1, |
| | | 0, |
| | | "é¢" |
| | | ); |
| | | } |
| | | }); |
| | | } |
| | | // else if (nPickFeature.primitive instanceof Cesium.GroundPrimitive) { |
| | | // let wmsLayer = this.$store.state.selectedLayers.filter((item) => { |
| | | // return item.name == "è¡æ¿åºåå¾"; |
| | |
| | | |
| | | // axios |
| | | // .get( |
| | | // "http://10.10.4.116:8070/gisserver/rest/services/XingZhengQuHuaTu/MapServer/identify", |
| | | // "https://skyzt.bda.gov.cn/gisserver/rest/services/XingZhengQuHuaTu/MapServer/identify", |
| | | // { |
| | | // params: { |
| | | // geometry: `${p.lon},${p.lat}`, |
| | |
| | | <div class="FloorWrap"> |
| | | <div id="closeBtn_onclick"><span>Ã</span></div> |
| | | <div id="FloorBox"> |
| | | <div> |
| | | æ¥ç模åï¼ |
| | | <select id="modelFy"> |
| | | <option value="/c3dserver/YHYQ1/tileset.json" style="background: rgba(0, 0, 0, 0.4)">æ°¸è¾å¤§å¦</option> |
| | | <option value="/ctsserver/yichengketing/tileset.json" style="background: rgba(0, 0, 0, 0.4)">亦å客å
</option> |
| | | <option value="/ctsserver/fengdaguoji/tileset.json" style="background: rgba(0, 0, 0, 0.4)">丰大å½é
</option> |
| | | </select> |
| | | </div> |
| | | <br /> |
| | | <div id="deviation"> |
| | | åç§»æ¹åï¼ |
| | | <input name="offset" class="styled" value="x" checked type="radio" /> |
| | | <label>Xè½´</label> |
| | | |
| | | <input name="offset" class="styled" value="y" type="radio" /> |
| | | <label>Yè½´</label> |
| | | |
| | | <input name="offset" class="styled" value="z" type="radio" /> |
| | | <label>Zè½´</label> |
| | | </div> |
| | | <br /> |
| | | <div class="checkbox checkbox-primary checkbox-inline" id="selectBox"> |
| | | æ¥çå±çº§ï¼ |
| | | <select id="selectlevel"> |
| | |
| | | <div id="toolbar"> |
| | | <div> |
| | | åç§»è·ç¦»ï¼ |
| | | <input |
| | | type="range" |
| | | min="-200" |
| | | max="200" |
| | | step="1" |
| | | data-bind="value: distance, valueUpdate: 'input'" |
| | | /> |
| | | <input type="range" min="-200" max="200" step="1" data-bind="value: distance, valueUpdate: 'input'" /> |
| | | <input type="text" size="5" data-bind="value: distance" /> |
| | | |
| | | <input |
| | | id="showBuild_onclick" |
| | | type="button" |
| | | class="btn btn-primary" |
| | | value="å±å¼" |
| | | /> |
| | | <input id="showBuild_onclick" type="button" class="btn btn-primary" value="å±å¼" /> |
| | | |
| | | <input |
| | | id="restore_onclick" |
| | | type="button" |
| | | class="btn btn-primary" |
| | | value="æ¢å¤" |
| | | /> |
| | | <input id="restore_onclick" type="button" class="btn btn-primary" value="æ¢å¤" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | }, |
| | | mounted() { |
| | | $(function () { |
| | | modelLayer = sgworld.Creator.create3DTilesets( |
| | | "", |
| | | "http://10.10.4.121:8070/gisserver/c3dserver/YHYQ1/tileset.json", |
| | | {}, |
| | | {}, |
| | | "0", |
| | | true, |
| | | (data) => { |
| | | let boundingSphere = data.item.boundingSphere; |
| | | Viewer.zoomTo( |
| | | data.item, |
| | | new SmartEarth.Cesium.HeadingPitchRange( |
| | | 0, |
| | | -0.7, |
| | | 3 * boundingSphere.radius |
| | | ) |
| | | ); |
| | | } |
| | | ); |
| | | setTimeout(() => { |
| | | showModel = sgworld.analysis.ShowBuildingRoom({ |
| | | model: modelLayer.item, //模ååºå
Primitives |
| | | distance: { x: 30, y: 0, z: 0 }, |
| | | //selectLevelColor: new SmartEarth.Cesium.Color.fromCssColorString("rgba(240,240,240,0.95)"), //å±ç¤ºæ¨¡åçé¢è² |
| | | //notSelectColor:new SmartEarth.Cesium.Color.fromCssColorString("rgba(102,204,255,0.5)"), //éå±ç¤ºæ¨¡åçé¢è² |
| | | //highlightColor:new SmartEarth.Cesium.Color.fromCssColorString("rgba(255,215,0,0.9)"), //éæ©å±ç¤ºæ¨¡åçé«äº®é¢è² |
| | | }); |
| | | }, 1000); |
| | | getModelLayer(); |
| | | //éæ©å±å¼ |
| | | $("#showBuild_onclick").click(function () { |
| | | let num = Number($("#selectlevel").val()); |
| | |
| | | sgworld.Creator.DeleteObject(modelLayer); |
| | | Bus.$emit("ShowFCFH", false); |
| | | }); |
| | | $("#modelFy").change(() => { |
| | | getModelLayer(); |
| | | }) |
| | | $('input[type=radio][name=offset]').change((event) => { |
| | | setClippingModel(); |
| | | }) |
| | | //è¡¨æ ¼æ°æ® |
| | | const dataTable = document.getElementById("dataTable"); |
| | | function createTableRow(dataObj) { |
| | |
| | | function loadTable(dataObj) { |
| | | deleteAllRows(); |
| | | createTableRow(dataObj); |
| | | } |
| | | function getModelLayer() { |
| | | const val = document.getElementById("modelFy").value; |
| | | var falg = false; |
| | | if (val.indexOf('YHYQ1') > -1) { |
| | | $("#selectBox").show(); |
| | | $("#toolbar").show(); |
| | | |
| | | } else { |
| | | falg = true; |
| | | $("#selectBox").hide(); |
| | | $("#toolbar").hide(); |
| | | $("#offsetX").attr("checked", true); |
| | | $("#offsetY").attr("checked", false); |
| | | $("#offsetZ").attr("checked", false); |
| | | } |
| | | const url = "http://10.10.4.121:8070/gisserver" + val; |
| | | // console.log(document.getElementById("modelFy")); |
| | | |
| | | addModelLayer(url, falg) |
| | | } |
| | | function addModelLayer(response, flag) { |
| | | if (modelLayer) { |
| | | sgworld.Creator.DeleteObject(modelLayer); |
| | | modelLayer = null |
| | | } |
| | | modelLayer = sgworld.Creator.create3DTilesets( |
| | | "", |
| | | response, |
| | | {}, |
| | | {}, |
| | | "0", |
| | | true, |
| | | (data) => { |
| | | let boundingSphere = data.item.boundingSphere; |
| | | Viewer.zoomTo( |
| | | data.item, |
| | | new SmartEarth.Cesium.HeadingPitchRange( |
| | | 0, |
| | | -0.7, |
| | | 3 * boundingSphere.radius |
| | | ) |
| | | ); |
| | | } |
| | | ); |
| | | setTimeout(() => { |
| | | showModel = sgworld.analysis.ShowBuildingRoom({ |
| | | model: modelLayer.item, //模ååºå
Primitives |
| | | distance: { x: 30, y: 0, z: 0 }, |
| | | //selectLevelColor: new SmartEarth.Cesium.Color.fromCssColorString("rgba(240,240,240,0.95)"), //å±ç¤ºæ¨¡åçé¢è² |
| | | //notSelectColor:new SmartEarth.Cesium.Color.fromCssColorString("rgba(102,204,255,0.5)"), //éå±ç¤ºæ¨¡åçé¢è² |
| | | //highlightColor:new SmartEarth.Cesium.Color.fromCssColorString("rgba(255,215,0,0.9)"), //éæ©å±ç¤ºæ¨¡åçé«äº®é¢è² |
| | | }); |
| | | if (flag) { |
| | | setClippingModel() |
| | | } |
| | | }, 1000); |
| | | } |
| | | function setClippingModel() { |
| | | var radios = document.querySelectorAll('input[name="offset"]:checked'); |
| | | if (radios.length > 0) { |
| | | var value = radios[0].value; |
| | | modelLayer.clippingModel({ |
| | | direction: value |
| | | }) |
| | | } |
| | | } |
| | | //å é¤è¡¨æ ¼ |
| | | function deleteAllRows() { |
| | |
| | | <style scoped> |
| | | .FloorWrap { |
| | | color: #fff; |
| | | min-width: 413px; |
| | | } |
| | | |
| | | #closeBtn_onclick { |
| | | width: 20px; |
| | | cursor: pointer; |
| | | margin-left: auto; |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | #closeBtn_onclick span { |
| | | font-size: 20px; |
| | | } |
| | | </style> |
| | | <style > |
| | | <style> |
| | | #dataTable { |
| | | background-color: rgba(0, 0, 0, 0.4); |
| | | position: fixed; |
| | |
| | | function getData(id, callback) { |
| | | fetch("./static/Signalling/data/" + list[id]).then(response => response.arrayBuffer()).then(data => { |
| | | |
| | | console.log(data); |
| | | debugger |
| | | // console.log(data); |
| | | // debugger |
| | | var dataView = new DataView(data); |
| | | signallingData.values[id] = []; |
| | | for (var i = 0; i < dataView.byteLength; i += 2) { |