From d4a3ca549f8755c2f87442c27217c3be39cab5cc Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期三, 14 八月 2024 16:00:10 +0800
Subject: [PATCH] 设备维修

---
 src/assets/js/mapSdk/menuManager.js |  124 ++++++++++++++++++++++++++++++++++++-----
 1 files changed, 108 insertions(+), 16 deletions(-)

diff --git a/src/assets/js/mapSdk/menuManager.js b/src/assets/js/mapSdk/menuManager.js
index 4e31acb..c993e80 100644
--- a/src/assets/js/mapSdk/menuManager.js
+++ b/src/assets/js/mapSdk/menuManager.js
@@ -1,8 +1,14 @@
+import { time } from 'echarts';
+import mapServer from './mapServe';
+
 const menuManager = {
     pid: null,
     pointFly: null,
     particle: null,
     AnalysisFlood: null,
+    modelLayer: null,
+    regionWeather: null,
+    regionWeather: null,
     colorAll: {
         point: SmartEarth.Cesium.Color.fromCssColorString('#ff0000'),
         polyline: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'),
@@ -62,6 +68,70 @@
                 break;
         }
     },
+    handlerClick(res) {
+        var that = this;
+        var handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
+        handler.setInputAction((event) => {
+            let cartesian = Viewer.camera.pickEllipsoid(event.position);
+            let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
+
+            if (cartesian) {
+                let lng = parseFloat(Cesium.Math.toDegrees(cartographic.longitude)).toFixed(6); // 缁忓害
+                let lat = parseFloat(Cesium.Math.toDegrees(cartographic.latitude)).toFixed(6); // 绾害
+                var alt = Viewer.camera.positionCartographic.height.toFixed(0);
+                if (res == 'a2') {
+                    that.setCreateFireAnalysis(lng, lat, alt);
+                } else if (res == 'a4') {
+                    that.setCreateRainAnalysis(lng, lat, alt);
+                } else if (res == 'a5') {
+                    that.setCreateSnowAnalysis(lng, lat, alt);
+                }
+            }
+            handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
+        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+    },
+    getModelLayer() {
+        const obj = mapServer.layerList.filter((item) => {
+            if (item.id == 'baseModel') {
+                return time;
+            }
+        });
+        if (obj.length <= 0) return;
+        this.modelLayer = obj[0].layer;
+    },
+    setCreateRainAnalysis(lng, lat, alt) {
+        this.regionWeather = earthCtrl.factory.createRegionWeather({
+            primitive: this.modelLayer.item,
+            position: new SmartEarth.Cesium.Cartesian3.fromDegrees(lng, lat, 1000),
+            radius: 1000,
+        });
+        this.regionWeather.enableWeatherType = SmartEarth.Cesium.RegionWeather.TYPE_RAIN;
+        this.regionWeather.regionAlpha = 0.6;
+        this.regionWeather.regionGradientDistance = 300;
+    },
+    setCreateSnowAnalysis(lng, lat, alt) {
+        this.regionWeather = earthCtrl.factory.createRegionWeather({
+            primitive: this.modelLayer.item,
+            position: new SmartEarth.Cesium.Cartesian3.fromDegrees(lng, lat, 1000),
+            radius: 1000,
+        });
+        this.regionWeather.enableWeatherType = SmartEarth.Cesium.RegionWeather.TYPE_SNOW;
+        this.regionWeather.regionAlpha = 0.8;
+        this.regionWeather.regionGradientDistance = 300;
+    },
+    setClearMenuS3() {
+        if (this.particle) {
+            this.particle.remove();
+            this.particle = null;
+        }
+        if (this.AnalysisFlood) {
+            this.AnalysisFlood.endWater();
+            this.AnalysisFlood = undefined;
+        }
+        if (this.regionWeather) {
+            this.regionWeather.enableWeatherType = SmartEarth.Cesium.RegionWeather.TYPE_NONE;
+        }
+    },
     // 鐏惧绠$悊
     setMenuS3(res) {
         switch (res.id) {
@@ -74,27 +144,14 @@
                     this.particle = null;
                     return;
                 }
+                this.handlerClick(res.id);
 
-                var that = this;
-                var handler = new Cesium.ScreenSpaceEventHandler(Viewer.scene.canvas);
-                handler.setInputAction((event) => {
-                    let cartesian = Viewer.camera.pickEllipsoid(event.position);
-                    let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
-
-                    if (cartesian) {
-                        let lng = parseFloat(Cesium.Math.toDegrees(cartographic.longitude)).toFixed(6); // 缁忓害
-                        let lat = parseFloat(Cesium.Math.toDegrees(cartographic.latitude)).toFixed(6); // 绾害
-                        var alt = Viewer.camera.positionCartographic.height.toFixed(0);
-                        that.setCreateFireAnalysis(lng, lat, alt);
-                    }
-                    handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);
-                }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
                 break;
             case 'a3':
                 if (this.AnalysisFlood) {
                     this.AnalysisFlood.endWater();
                     this.AnalysisFlood = undefined;
-                    return
+                    return;
                 }
                 var url = SmartEarthRootUrl + 'Workers/image/33.gif';
                 const method = {
@@ -104,6 +161,22 @@
                     url: url,
                 };
                 this.AnalysisFlood = earthCtrl.analysis.createSubmergence(method, (value) => {});
+                break;
+            case 'a4':
+                if (!this.modelLayer) {
+                    this.getModelLayer();
+                }
+                this.handlerClick(res.id);
+                break;
+
+            case 'a5':
+                if (!this.modelLayer) {
+                    this.getModelLayer();
+                }
+                this.handlerClick(res.id);
+                break;
+            case 'a6':
+                this.setClearMenuS3();
                 break;
             default:
                 return null;
@@ -189,7 +262,26 @@
                 earthCtrl.factory.createSimpleGraphic('label', {}, (entity) => {});
                 break;
             case 'a3':
-                earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {});
+                earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {
+                   
+                    // console.log(entity);
+
+                    // const obj = entity.polyline.positions.getValue();
+                    // var std = [];
+                    // for (var i in obj) {
+                    //     var ellipsoid =Viewer.scene.globe.ellipsoid;
+
+                    //     // 灏嗕笘鐣屽潗鏍囪浆鎹负鍦扮悊鍧愭爣锛圕artographic锛�
+                    //     var cartographic = ellipsoid.cartesianToCartographic(obj[i]);
+
+                    //     // 鑾峰彇缁忕含搴�
+                    //     var longitude = Cesium.Math.toDegrees(cartographic.longitude);
+                    //     var latitude = Cesium.Math.toDegrees(cartographic.latitude);
+                    //     var height = 0;
+                    //     std.push([longitude, latitude, height]);
+                    // }
+                    // console.log(std);
+                });
                 break;
             case 'a4':
                 earthCtrl.factory.createSimpleGraphic('rectangle', { showSize: false }, (entity) => {});

--
Gitblit v1.9.3