From 30e393df7b1d89c4172a7f4bec6e80e2dc00c373 Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期一, 05 八月 2024 10:14:49 +0800
Subject: [PATCH] 语义功能添加

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

diff --git a/src/assets/js/mapSdk/menuManager.js b/src/assets/js/mapSdk/menuManager.js
index 523bcab..4e31acb 100644
--- a/src/assets/js/mapSdk/menuManager.js
+++ b/src/assets/js/mapSdk/menuManager.js
@@ -1,5 +1,13 @@
 const menuManager = {
     pid: null,
+    pointFly: null,
+    particle: null,
+    AnalysisFlood: null,
+    colorAll: {
+        point: SmartEarth.Cesium.Color.fromCssColorString('#ff0000'),
+        polyline: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'),
+        polygon: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'),
+    },
     init(res) {
         switch (res.pid) {
             case 's1': //閰嶇綉宸℃
@@ -60,10 +68,61 @@
             case 'a1':
                 return res.name;
                 break;
+            case 'a2':
+                if (this.particle) {
+                    this.particle.remove();
+                    this.particle = null;
+                    return;
+                }
+
+                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
+                }
+                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;
             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) {
@@ -80,12 +139,30 @@
     setMenuS5(res) {
         switch (res.id) {
             case 'a1':
-            case 'a3':
+                if (this.pointFly) {
+                    this.pointFly.removeFromMap();
+                } else {
+                    earthCtrl.factory.createSimpleGraphic('billboard', {}, (entity) => {
+                        const position = entity.position.getValue();
+                        const coordinate = earthCtrl.core.toDegrees(position);
+                        this.pointFly = earthCtrl.camera.rotateCamera({
+                            lon: coordinate.lon,
+                            lat: coordinate.lat,
+                            distance: 1000,
+                            pitch: -30,
+                        });
+                    });
+                }
                 return null;
                 break;
             case 'a2':
                 return res.name;
                 break;
+            case 'a3':
+                earthCtrl.analysis.createIndoormode({ showHelp: true });
+                return null;
+                break;
+
             default:
                 return null;
                 break;
@@ -104,11 +181,60 @@
     },
     // 鏍囩粯
     setMenuS7(res) {
+        switch (res.id) {
+            case 'a1':
+                earthCtrl.factory.createSimpleGraphic('point', {}, (entity) => {});
+                break;
+            case 'a2':
+                earthCtrl.factory.createSimpleGraphic('label', {}, (entity) => {});
+                break;
+            case 'a3':
+                earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {});
+                break;
+            case 'a4':
+                earthCtrl.factory.createSimpleGraphic('rectangle', { showSize: false }, (entity) => {});
+                break;
+            case 'a5':
+                earthCtrl.factory.createSimpleGraphic('polygon', { showSize: false }, (entity) => {});
+                break;
+            case 'a6':
+                earthCtrl.factory.SimpleGraphic.clear();
+                break;
+            default:
+                break;
+        }
         return null;
     },
     // 娴嬮噺
     setMenuS8(res) {
-        return null;
+        const colorAll = this.colorAll;
+        switch (res.id) {
+            case 'a1':
+                earthCtrl.measure.clampLineDistance(colorAll, (e) => {});
+                break;
+            case 'a2':
+                earthCtrl.measure.altitude(colorAll, (e) => {});
+                break;
+            case 'a3':
+                earthCtrl.measure.surfaceArea(
+                    {
+                        ...colorAll,
+                        tin: true, // 鏄惁鏄剧ずtin涓夎缃�
+                        onlyTerrain: false, // 鏄惁鍙祴閲忕簿缁嗗湴褰�
+                    },
+                    (e) => {}
+                );
+                break;
+            case 'a4':
+                earthCtrl.measure.planeArea(colorAll, (e) => {});
+                break;
+            case 'a5':
+                earthCtrl.measure.horizontalDistance(colorAll, (e) => {});
+                break;
+            case 'a6':
+                earthCtrl.measure.clearResult();
+                break;
+        }
     },
     // 鐗规晥
     setMenuS9(res) {
@@ -117,7 +243,7 @@
                 return res.name;
                 break;
             case 'a2':
-                return res.name;
+                earthCtrl.factory.createScreenshot();
                 break;
             default:
                 return null;

--
Gitblit v1.9.3