From 1dee40ea46601f2ee5d10aa0190625ebf03bdc4e Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 02 Dec 2024 17:02:19 +0800
Subject: [PATCH] 1
---
src/views/pd/components/dynamicPanel.vue | 171 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 133 insertions(+), 38 deletions(-)
diff --git a/src/views/pd/components/dynamicPanel.vue b/src/views/pd/components/dynamicPanel.vue
index d8d9a67..ed15e9b 100644
--- a/src/views/pd/components/dynamicPanel.vue
+++ b/src/views/pd/components/dynamicPanel.vue
@@ -2,7 +2,7 @@
* @Author: shuishen 1109946754@qq.com
* @Date: 2024-11-09 15:41:35
* @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2024-11-26 01:09:57
+ * @LastEditTime: 2024-11-28 19:36:24
* @FilePath: \bigScreen\src\views\pd\components\dynamicPanel.vue
* @Description:
*
@@ -65,8 +65,8 @@
fiveContent: '应急指挥部指导企业处理受污染废水, 监测公共应急池水质 ,确保达标后安全转运至绿源污水处理厂。',
fivePointPosition: {
- lng: 115.10845441,
- lat: 27.27327366
+ lng: 115.10843364,
+ lat: 27.27320219
},
fivetime: 25000,
},
@@ -83,10 +83,10 @@
onetime: 0,
lineCenter: {
- lng: 115.10343807,
- lat: 27.27256126
+ lng: 115.10627858,
+ lat: 27.29434439
},
- linePosition: '115.10626847,27.29410411,80;115.10626769,27.29453267,80',
+ linePosition: '115.10627726,27.29408853,80;115.10627703,27.29456132,80',
lineTime: 5000,
twoContent: '园区关闭北区雨水排口,拦截污染水体。',
@@ -96,10 +96,10 @@
},
twotime: 10000,
- threeContent: '园区启用北区公共应急池,将已拦截废水泵入应急池。',
+ threeContent: '园区启用北区公共应急池(拟建),将已拦截废水泵入应急池。',
threePointPosition: {
- lng: 115.10418532,
- lat: 27.29444603
+ lng: 115.106600,
+ lat: 27.296891
},
threetime: 15000,
@@ -122,61 +122,133 @@
title: '典型案例3',
content: '危险化学品运输事故: 北片区某企业的危化品运输车辆发生侧翻,大量盐酸流至路面,如不采取措施,将造成污染事故,影响到赣江下游水质。',
+ showModel: true,
+
+
oneCentent: '2024年09月16日14时,北片区某公司的危化品运输车辆发生侧翻,大量盐酸流至路面。',
onePointPosition: {
- lng: 115.10248629,
- lat: 27.28112873
+ lng: 115.10639786,
+ lat: 27.28116943
},
- onetime: 0,
+ onetime: 8000,
twoContent: '调度金龙水库清水,稀释污染团。',
twoPointPosition: {
lng: 115.10488545,
lat: 27.27678110
},
- twotime: 0,
+ twotime: 13000,
threeContent: '转输至江西粤鹏环保高新技术开发有限公司事故应急池、初期雨水池。',
threePointPosition: {
lng: 115.10545135,
lat: 27.28043872
},
- threetime: 0,
+ threetime: 18000,
fourContent: '转输至江西腾龙源环保科技有限公司事故应急池、初期雨水池。',
fourPointPosition: {
lng: 115.10332118,
lat: 27.27831698
},
- fourtime: 0,
+ fourtime: 23000,
},
]
})
-const dynamicVectorLayer = new DC.VectorLayer('dynamicVectorLayer').addTo(window.$viewer)
-const dynamicHtmlLayer = new DC.HtmlLayer('dynamicHtmlLayer').addTo(window.$viewer)
-const dynamicLineVectorLayer = new DC.VectorLayer('dynamicLineVectorLayer').addTo(window.$viewer)
+let dynamicVectorLayer = new DC.VectorLayer('dynamicVectorLayer').addTo(window.$viewer)
+let dynamicHtmlLayer = new DC.HtmlLayer('dynamicHtmlLayer').addTo(window.$viewer)
+let dynamicLineVectorLayer = new DC.VectorLayer('dynamicLineVectorLayer').addTo(window.$viewer)
+
+let modelPosition = [
+ {
+ lng: 115.10601196,
+ lat: 27.28378838
+ },
+ {
+ lng: 115.10602432,
+ lat: 27.28339800
+ },
+ {
+ lng: 115.10600450,
+ lat: 27.28319338,
+ },
+ {
+ lng: 115.10605031,
+ lat: 27.28294272,
+ },
+ {
+ lng: 115.10610404,
+ lat: 27.28267996
+ },
+ {
+ lng: 115.10614202,
+ lat: 27.28248175
+ },
+ {
+ lng: 115.10620011,
+ lat: 27.28221311
+ },
+ {
+ lng: 115.10640155,
+ lat: 27.28121605
+ },
+
+]
+
+let positions = modelPosition.map(i => [i.lng, i.lat, 64].join(',')).join(';')
+let tc = new DC.TrackController(window.$viewer)
+let track = new DC.Track(positions, 5)
+track.setModel(VITE_APP_BASE + 'gltf/car.gltf', {
+ show: true,
+ scale: 0.0025,
+ // nodeTransformations: {
+ // rotation: window.$Cesium.Quaternion.fromHeadingPitchRoll(window.$Cesium.Math.toRadians(0), window.$Cesium.Math.toRadians(0), window.$Cesium.Math.toRadians(0)),
+ // }
+})
+
+tc.addTrack(track)
const schemeStart = (item) => {
emit('closePanel')
clearAll()
- window.$viewer.flyToPosition(new DC.Position(item.onePointPosition.lng, item.onePointPosition.lat, 400, 0, -90, 0), () => {
- let oneCenter = DC.Position.fromObject(item.onePointPosition)
- let oneCircle = new DC.Circle(oneCenter, 20)
- oneCircle.setStyle({
- material: new DC.CircleWaveMaterialProperty({
- color: DC.Color.RED.withAlpha(0.9),
- speed: 20,
- count: 5,
- gradient: 0.5
+ if (item.showModel) {
+ window.$viewer.flyToPosition("115.10587903,27.28374884,400,0,-90", () => {
+ track.setModel(VITE_APP_BASE + 'gltf/car.gltf', {
+ show: true,
+ scale: 0.0025,
+ // nodeTransformations: {
+ // rotation: window.$Cesium.Quaternion.fromHeadingPitchRoll(window.$Cesium.Math.toRadians(0), window.$Cesium.Math.toRadians(0), window.$Cesium.Math.toRadians(0)),
+ // }
+ })
+
+ tc.play()
+ tc.viewTrack(track, {
+ mode: '2',
+ pitch: -45,
+ range: 400
})
})
- dynamicVectorLayer.addOverlay(oneCircle)
+ }
- let oneCentent = new DC.DivIcon(
- new DC.Position(item.onePointPosition.lng, item.onePointPosition.lat, 70),
- `<div class="dynamic-map-popup">
+ timeOne = setTimeout(() => {
+ function oneLoad () {
+ let oneCenter = DC.Position.fromObject(item.onePointPosition)
+ let oneCircle = new DC.Circle(oneCenter, 20)
+ oneCircle.setStyle({
+ material: new DC.CircleWaveMaterialProperty({
+ color: DC.Color.RED.withAlpha(0.9),
+ speed: 20,
+ count: 5,
+ gradient: 0.5
+ })
+ })
+ dynamicVectorLayer.addOverlay(oneCircle)
+
+ let oneCentent = new DC.DivIcon(
+ new DC.Position(item.onePointPosition.lng, item.onePointPosition.lat, 70),
+ `<div class="dynamic-map-popup">
<div class="content-wrap">
<div class="content">
<p>${item.oneCentent}</p>
@@ -184,10 +256,18 @@
</div>
<div class="arrow"></div>
</div>`
- // <p>特征污染物:${item.specificPollutant}</p>
- )
- dynamicHtmlLayer.addOverlay(oneCentent)
- }, 3)
+ // <p>特征污染物:${item.specificPollutant}</p>
+ )
+ dynamicHtmlLayer.addOverlay(oneCentent)
+ }
+ if (item.showModel) {
+ oneLoad()
+ } else {
+ window.$viewer.flyToPosition(new DC.Position(item.onePointPosition.lng, item.onePointPosition.lat, 400, 0, -90, 0), () => {
+ oneLoad()
+ }, 3)
+ }
+ }, item.onetime)
item.linePosition && (lineTime = setTimeout(() => {
let polyline = new DC.Polyline(item.linePosition)
@@ -333,6 +413,14 @@
timeFour && (clearTimeout(timeFour), timeFour = null)
timeFive && (clearTimeout(timeFive), timeFive = null)
+ track.setModel(VITE_APP_BASE + 'gltf/car.gltf', {
+ show: false,
+ scale: 0.0025,
+ // nodeTransformations: {
+ // rotation: window.$Cesium.Quaternion.fromHeadingPitchRoll(window.$Cesium.Math.toRadians(0), window.$Cesium.Math.toRadians(0), window.$Cesium.Math.toRadians(0)),
+ // }
+ })
+
dynamicVectorLayer.clear()
dynamicHtmlLayer.clear()
dynamicLineVectorLayer.clear()
@@ -341,9 +429,16 @@
onUnmounted(() => {
clearAll()
- dynamicVectorLayer && window.$viewer.removeLayer(dynamicVectorLayer)
- dynamicHtmlLayer && window.$viewer.removeLayer(dynamicHtmlLayer)
- dynamicLineVectorLayer && window.$viewer.removeLayer(dynamicLineVectorLayer)
+ tc.clear()
+ dynamicVectorLayer && window.$viewer && window.$viewer.removeLayer(dynamicVectorLayer)
+ dynamicHtmlLayer && window.$viewer && window.$viewer.removeLayer(dynamicHtmlLayer)
+ dynamicLineVectorLayer && window.$viewer && window.$viewer.removeLayer(dynamicLineVectorLayer)
+
+ tc = null
+ track = null
+ dynamicVectorLayer = null
+ dynamicHtmlLayer = null
+ dynamicLineVectorLayer = null
})
</script>
--
Gitblit v1.9.3