From ab8f3297f7c8243d486c9da0900e4f813b2ea2df Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期三, 27 十一月 2024 17:16:46 +0800
Subject: [PATCH] 功能更新

---
 src/assets/js/mapSdk/menuManager.js |  155 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 152 insertions(+), 3 deletions(-)

diff --git a/src/assets/js/mapSdk/menuManager.js b/src/assets/js/mapSdk/menuManager.js
index caf3ce7..aa66c21 100644
--- a/src/assets/js/mapSdk/menuManager.js
+++ b/src/assets/js/mapSdk/menuManager.js
@@ -1,6 +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'),
@@ -60,16 +68,134 @@
                 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) {
             case 'a1':
                 return res.name;
                 break;
+            case 'a2':
+                if (this.particle) {
+                    this.particle.remove();
+                    this.particle = null;
+                    return;
+                }
+                this.handlerClick(res.id);
+
+                break;
+            case 'a3':
+                if (this.AnalysisFlood) {
+                    this.AnalysisFlood.endWater();
+                    this.AnalysisFlood = undefined;
+                    return;
+                }
+                var url = SmartEarthRootUrl + 'Workers/image/33.gif';
+                const method = {
+                    pointSelect: true, // rectangle: 'rectangle',
+                    spood: 20,
+                    GroupID: 0,
+                    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;
                 break;
         }
+    },
+    setCreateFireAnalysis(lon, lat, alt) {
+        this.particle = earthCtrl.factory.createParticleEffect(
+            'flame',
+            {
+                x: lon,
+                y: lat,
+                z: 0,
+            },
+            {
+                translation: SmartEarth.Cesium.Cartesian3.fromElements(0, 0, 0), //骞崇Щ
+            },
+            (data) => {}
+        );
     },
     //鍥惧眰绠$悊
     setMenuS4(res) {
@@ -136,13 +262,19 @@
                 earthCtrl.factory.createSimpleGraphic('label', {}, (entity) => {});
                 break;
             case 'a3':
-                earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {});
+                earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {
+                    const obj = this.getWKtCoord(entity.polyline.positions.getValue());
+                    console.log('polyline Wkt:' + obj);
+                });
                 break;
             case 'a4':
                 earthCtrl.factory.createSimpleGraphic('rectangle', { showSize: false }, (entity) => {});
                 break;
             case 'a5':
-                earthCtrl.factory.createSimpleGraphic('polygon', { showSize: false }, (entity) => {});
+                earthCtrl.factory.createSimpleGraphic('polygon', { showSize: false }, (entity) => {
+                    const obj = this.getWKtCoord(entity.polygon.hierarchy.getValue().positions);
+                    console.log('polygon Wkt:' + obj);
+                });
                 break;
             case 'a6':
                 earthCtrl.factory.SimpleGraphic.clear();
@@ -151,6 +283,23 @@
                 break;
         }
         return null;
+    },
+    getWKtCoord(obj) {
+        var ellipsoid = Viewer.scene.globe.ellipsoid;
+        var std = [];
+        for (var i in obj) {
+            // 灏嗕笘鐣屽潗鏍囪浆鎹负鍦扮悊鍧愭爣锛圕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]);
+        }
+        return std;
+    },
+    getCartesianCoord(longitude, latitude, height) {
+        return Cesium.Cartesian3.fromDegrees(longitude, latitude, height);
     },
     // 娴嬮噺
     setMenuS8(res) {
@@ -190,7 +339,7 @@
                 return res.name;
                 break;
             case 'a2':
-                return res.name;
+                earthCtrl.factory.createScreenshot();
                 break;
             default:
                 return null;

--
Gitblit v1.9.3