From f5763f787d5cc5aa0b7d248e0f494c4232f1e3f3 Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期一, 27 十一月 2023 16:31:21 +0800
Subject: [PATCH] 版本更新

---
 src/assets/js/Map/index.js |  329 +++++++++++++++++++++++++++++++-----------------------
 1 files changed, 187 insertions(+), 142 deletions(-)

diff --git a/src/assets/js/Map/index.js b/src/assets/js/Map/index.js
index 0e4e025..91803d7 100644
--- a/src/assets/js/Map/index.js
+++ b/src/assets/js/Map/index.js
@@ -1,164 +1,209 @@
 //閰嶇疆鏂囦欢鍦板潃
-import config from "./config";
+// import config from "../../../../public/config/config";
 //鏈嶅姟鍔犺浇閰嶇疆鏂囦欢
+import { Store } from "vuex";
 import server from "./server";
-
+import store from "@/store";
 const InitMap = {
-    earthCtrl: null,
-    Viewer: null,
-    //鍦板浘鍒濆鍖�
-    init3DMap() {
-        //璁剧疆鏈堢悆鍧愭爣绯�
-        SmartEarth.Cesium.Ellipsoid.WGS84 = new SmartEarth.Cesium.Ellipsoid(
-            1737400.0,
-            1737400.0,
-            1737400.0
-        );
-        //椤甸潰鍒濆鍖�
-        this.earthCtrl = new SmartEarth.EarthCtrl("cesiumContainer", {
-            licenseServer: "https://cim.smartearth.cn/",
-            StaticFileBaseUrl: "/CIMSDK/"
-        });
+  earthCtrl: null,
+  Viewer: null,
+  graticules: null,
+  //鍦板浘鍒濆鍖�
+  init3DMap() {
+    SmartEarth.Cesium.ExternalParameter.eliminate = false;
+    SmartEarth.Cesium.ExternalParameter.changeApproximateTerrainHeights = true;
+    SmartEarth.Cesium.ExternalParameter.maxTerrainHeight = 2000000;
+    SmartEarth.Cesium.ExternalParameter.minTerrainHeight = -2000000;
+    SmartEarth.Cesium.ShadowMap.MAXIMUM_DISTANCE = 20000000000;
+    SmartEarth.Cesium.ExternalParameter.ellipsoidCoordinates = 'MOON2000'
+    window.Cesium = SmartEarth.Cesium;
+    SmartEarth.Cesium.Ellipsoid.WGS84 = new SmartEarth.Cesium.Ellipsoid(
+      1737400.0,
+      1737400.0,
+      1737400.0
+    );
 
-        this.Viewer = this.earthCtrl._Viewer;
-        window.earthCtrl = this.earthCtrl;
-        window.Viewer = this.earthCtrl._Viewer;
 
-        Viewer.imageryLayers.removeAll();
+    //椤甸潰鍒濆鍖�
+    this.earthCtrl = new SmartEarth.EarthCtrl("cesiumContainer", {
+      StaticFileBaseUrl: config.StaticFileBaseUrl,
+      ellipsoidCoordinates: 'MOON2000',
+      timeline: true,
+      shadowBackCul1: false
+    });
+    this.earthCtrl.Viewer.scene.debugShowFramesPerSecond = true
+    this.earthCtrl.coreMap.scene.screenSpaceCameraController.enableCollisionDetection = true;
+    this.earthCtrl.Viewer.scene.globe.terrainExaggeration = 1.00001
+    // this.earthCtrl.shadowMap.maximumDistance = 10000.0;
+    window.earthCtrl = this.earthCtrl;
+    window.Viewer = this.earthCtrl._Viewer;
+    Viewer.scene.skyAtmosphere.show = false;
+    window.Cesium = SmartEarth.Cesium;
+    window.sgworld = earthCtrl;
+    sgworld.Creator.SimpleGraphic.edit(true, { editProp: false });
 
-        Viewer.scene.globe.showGroundAtmosphere = false;
 
-        // var terrain = new SmartEarth.Cesium.CesiumTerrainProvider({
-        //     url: config.moonTerrain,
-        //     tilingScheme: new SmartEarth.Cesium.GeographicTilingScheme({
-        //         ellipsoid: SmartEarth.Cesium.Ellipsoid.MOON,
-        //     }),
-        // });
-        // Viewer.terrainProvider = terrain;
-        // Viewer.scene.globe.terrainExaggeration = 5;
-        // server.AddWmtesLayer(config.moonWmts);
-        // var param = {
-        //     name: labelName,
-        //     id: earthCtrl.factory.createUUID(),
-        //     text: "鏂囧瓧宸ュ叿",
-        //     font: '50pt monospace',
-        //     outlineWidth: 2,
-        //     fillColor: SmartEarth.Cesium.Color.RED,
-        //     lon: 47.5087,
-        //     lat: 23.6963,
-        //     alt: 10
-        // };
-        // labelEntity = earthCtrl.factory.createLabel(param);
-        server.AddTmsLayer(config.moonTms);
+    // 鏈�灏忕缉鏀鹃珮搴︼紙绫筹級
+    // Viewer.scene.screenSpaceCameraController.minimumZoomDistance =10000;
+    // 鏈�澶х缉鏀鹃珮搴︼紙绫筹級
+    // Viewer.scene.screenSpaceCameraController.maximumZoomDistance = 5000000;
 
-        // server.AddTmsLayer('http://localhost:8080/abc');
+    //=======================
+    //闃村奖鍒嗘瀽
+    Viewer.scene.globe.lightingFadeOutDistance = 5.8e+7;
+    Viewer.scene.globe.enableLighting = false;
+    earthCtrl.shadows = false;
+    //璁剧疆鐞冧綋棰滆壊
+    window.Viewer.scene.globe.baseColor = new Cesium.Color.fromCssColorString('#A9A9A9');
+    //娓呴櫎鎵�鏈夐粯璁ゅ浘灞� 
+    window.Viewer.imageryLayers.removeAll();
+    window.setLayer();
 
-        // earthCtrl.camera.flyTo(47.5087, 23.6963, 300, 9.5, -45, 0.0, 5);
-
-        // //娣诲姞榧犳爣宸﹀嚮浜嬩欢
-        // this.addMouseLeftClickEvents();
-        // this.addMouseMouseMoveEvents();
-    },
-    //榧犳爣宸﹂敭鐐瑰嚮浜嬩欢娣诲姞
-    addMouseLeftClickEvents() {
-        if (window.handleLeftClick) {
-            window.handleLeftClick.removeInputAction(
-                Cesium.ScreenSpaceEventType.LEFT_CLICK
-            ); //绉婚櫎浜嬩欢
-            window.handleLeftClick = null;
+    // Viewer.scene.globe.depthTestAgainstTerrain = true;
+    Viewer.scene.globe.depthTestAgainstTerrain = false; // 寮�鍚繁搴︽祴璇�
+    Viewer.animation.container.style.visibility = "hidden";
+    Viewer.timeline.container.style.visibility = "hidden";
+    //=======================
+    //澶ф皵灞�
+    Viewer.scene.globe.showGroundAtmosphere = false;
+    sgworld._Viewer.scene.debugShowFramesPerSecond = false;
+    sgworld.Navigate.Stop(); //鍙栨秷椋炶鐘舵��
+    sgworld.Navigate.setPosition(-1093596.38, 5729026.12, 4136590.41);
+    this.addMouseLeftClickEvents();
+    this.addMouseLeftDownEvents();
+  },
+  addMouseLeftDownEvents() {
+    if (window.handleLeftClick) {
+      window.handleLeftClick.removeInputAction(
+        Cesium.ScreenSpaceEventType.LEFT_CLICK
+      ); //绉婚櫎浜嬩欢
+      window.handleLeftClick = null;
+    }
+    const pickGlobeSlope = new SmartEarth.Cesium.PickGlobeSlope(earthCtrl.Viewer)
+    window.handleLeftClick = new Cesium.ScreenSpaceEventHandler(
+      window.Viewer.scene.canvas
+    );
+    var that = this;
+    window.handleLeftClick.setInputAction(function (event) {
+      const angle = pickGlobeSlope.pickSlope(event.position)
+      if (store.state.slopeQueyFlag) {
+        if (!store.state.showSlopeQuey) {
+          store.state.showSlopeQuey = true;
         }
-        window.handleLeftClick = new Cesium.ScreenSpaceEventHandler(
-            window.Viewer.scene.canvas
-        );
-        window.handleLeftClick.setInputAction(function (event) {
-            let cartesian = window.Viewer.camera.pickEllipsoid(event.position);
-            if (cartesian) {
-                let cartographic = Cesium.Cartographic.fromCartesian(cartesian);
-                let lng = Cesium.Math.toDegrees(cartographic.longitude); // 缁忓害
-                let lat = Cesium.Math.toDegrees(cartographic.latitude); // 绾害
-                let alt = cartographic.height; // 楂樺害锛屾き鐞冮潰height姘歌繙绛変簬0
-                let coordinate = {
-                    longitude: Number(lng.toFixed(6)),
-                    latitude: Number(lat.toFixed(6)),
-                    altitude: Number(alt.toFixed(2)),
+        store.state.slopeQueyValue = angle.toFixed(6);
 
-                };
+      }
 
-            }
+    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
+  },
 
-        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
-    },
+  //榧犳爣宸﹂敭鐐瑰嚮浜嬩欢娣诲姞
+  addMouseLeftClickEvents() {
+    if (window.handleLeftDown) {
+      window.handleLeftDown.removeInputAction(
+        Cesium.ScreenSpaceEventType.LEFT_DOWN
+      ); //绉婚櫎浜嬩欢
+      window.handleLeftDown = null;
+    }
+    window.handleLeftDown = new Cesium.ScreenSpaceEventHandler(
+      window.Viewer.scene.canvas
+    );
+    var that = this;
+    window.handleLeftDown.setInputAction(function (event) {
+      let cartesian = window.Viewer.scene.pick(event.position);
+      if (Cesium.defined(cartesian)) {
 
-    addMouseMouseMoveEvents() {
-        if (window.handleMouseMove) {
-            window.handleMouseMove.removeInputAction(
-                Cesium.ScreenSpaceEventType.MOUSE_MOVE
-            ); //绉婚櫎浜嬩欢
-            window.handleMouseMove = null;
+        if (cartesian.id.shpType && cartesian.id.shpType == 'temporaryLayer') {
+
+          that.setEditTemporaryLayer(cartesian.id._id)
         }
-        window.handleMouseMove = new Cesium.ScreenSpaceEventHandler(window.Viewer.scene.canvas);
-        window.handleMouseMove.setInputAction(function (movement) {
-            let cartesian = window.Viewer.camera.pickEllipsoid(
-                movement.endPosition,
-                window.Viewer.scene.globe.ellipsoid
-            );
-            if (cartesian) {
-                //灏嗙瑳鍗″皵鍧愭爣杞崲涓哄湴鐞嗗潗鏍�
-                var cartographic =
-                    window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);
-                //灏嗗姬搴﹁浆涓哄害鐨勫崄杩涘埗搴﹁〃绀�
-                var lng = Cesium.Math.toDegrees(cartographic.longitude);
-                var lat = Cesium.Math.toDegrees(cartographic.latitude);
-                //鑾峰彇鐩告満楂樺害
-                var alt = Math.ceil(window.Viewer.camera.positionCartographic.height);
 
-                let coordinate = {
-                    longitude: Number(lng.toFixed(6)),
-                    latitude: Number(lat.toFixed(6)),
-                    altitude: Number(alt.toFixed(2)),
-                    type: 'MOUSE_MOVE'
-                };
-                window.addMouseEvents(coordinate)
-            }
-        }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
-    },
+      }
+    }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
+  },
+  setEditTemporaryLayer(res) {
+    // store.state.editTemporaryId = res;
+    // console.log(store.state.editTemporaryId)
 
-    //CGCS2000杞湀鐞冨潗鏍�---寰呴獙璇�
-    Cjcs2000ToMoon() {
-        // 瀹氫箟寰呰浆鎹㈢殑缁忕含搴﹀潗鏍囧拰楂樺害
-        const longitude = 110.5;
-        const latitude = 34.5;
-        const height = 0;
+    if (store.state.editTemporaryId && store.state.editTemporaryId == res) {
 
-        // 瀹氫箟CGCS2000鍧愭爣绯�
-        const cgcs2000 = new Cesium.Ellipsoid(
-            6378137.0,
-            6378137.0,
-            6356752.3142451793
-        );
+      store.state.setEditTemporaryShow = true;
+    }
+  },
+  addMouseMouseMoveEvents() {
+    if (window.handleMouseMove) {
+      window.handleMouseMove.removeInputAction(
+        Cesium.ScreenSpaceEventType.MOUSE_MOVE
+      ); //绉婚櫎浜嬩欢
+      window.handleMouseMove = null;
+    }
+    window.handleMouseMove = new Cesium.ScreenSpaceEventHandler(
+      window.Viewer.scene.canvas
+    );
+    window.handleMouseMove.setInputAction(function (movement) {
+      let cartesian = window.Viewer.camera.pickEllipsoid(
+        movement.endPosition,
+        window.Viewer.scene.globe.ellipsoid
+      );
+      if (cartesian) {
+        //灏嗙瑳鍗″皵鍧愭爣杞崲涓哄湴鐞嗗潗鏍�
+        var cartographic =
+          window.Viewer.scene.globe.ellipsoid.cartesianToCartographic(
+            cartesian
+          );
+        //灏嗗姬搴﹁浆涓哄害鐨勫崄杩涘埗搴﹁〃绀�
+        var lng = Cesium.Math.toDegrees(cartographic.longitude);
+        var lat = Cesium.Math.toDegrees(cartographic.latitude);
+        //鑾峰彇鐩告満楂樺害
+        var alt = Math.ceil(window.Viewer.camera.positionCartographic.height);
 
-        // 瀹氫箟Moon2000鍧愭爣绯�
-        const moon2000 = new Cesium.Ellipsoid(1737400.0, 1737400.0, 1737400.0);
+        let coordinate = {
+          longitude: Number(lng.toFixed(6)),
+          latitude: Number(lat.toFixed(6)),
+          altitude: Number(alt.toFixed(2)),
+          type: "MOUSE_MOVE",
+        };
+        window.addMouseEvents(coordinate);
+      }
+    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
+  },
 
-        // 灏嗙粡绾害鍧愭爣杞崲涓虹瑳鍗″皵鍧愭爣绯�
-        const cartesian3 = Cesium.Cartesian3.fromDegrees(
-            longitude,
-            latitude,
-            height,
-            cgcs2000
-        );
-        // 灏嗙瑳鍗″皵鍧愭爣绯昏浆鎹负Moon2000鍧愭爣绯�
-        const moonCartesian3 = Cesium.Transforms.eastNorthUpToFixedFrame(
-            cartesian3,
-            cgcs2000,
-            moon2000
-        );
-        // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害
-        console.log(moonCartesian3);
-        // 灏哅oon2000鍧愭爣绯荤殑绗涘崱灏斿潗鏍囪浆鎹负缁忕含搴﹀潗鏍�
-        const moonPosition = Cesium.Cartographic.fromCartesian(moonCartesian3);
-        // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害
-        console.log(moonPosition);
-    },
+  //CGCS2000杞湀鐞冨潗鏍�---寰呴獙璇�
+  Cjcs2000ToMoon() {
+    // 瀹氫箟寰呰浆鎹㈢殑缁忕含搴﹀潗鏍囧拰楂樺害
+    const longitude = 110.5;
+    const latitude = 34.5;
+    const height = 0;
+
+    // 瀹氫箟CGCS2000鍧愭爣绯�
+    const cgcs2000 = new Cesium.Ellipsoid(
+      6378137.0,
+      6378137.0,
+      6356752.3142451793
+    );
+
+    // 瀹氫箟Moon2000鍧愭爣绯�
+    const moon2000 = new Cesium.Ellipsoid(1737400.0, 1737400.0, 1737400.0);
+
+    // 灏嗙粡绾害鍧愭爣杞崲涓虹瑳鍗″皵鍧愭爣绯�
+    const cartesian3 = Cesium.Cartesian3.fromDegrees(
+      longitude,
+      latitude,
+      height,
+      cgcs2000
+    );
+    // 灏嗙瑳鍗″皵鍧愭爣绯昏浆鎹负Moon2000鍧愭爣绯�
+    const moonCartesian3 = Cesium.Transforms.eastNorthUpToFixedFrame(
+      cartesian3,
+      cgcs2000,
+      moon2000
+    );
+    // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害
+    console.log(moonCartesian3);
+    // 灏哅oon2000鍧愭爣绯荤殑绗涘崱灏斿潗鏍囪浆鎹负缁忕含搴﹀潗鏍�
+    const moonPosition = Cesium.Cartographic.fromCartesian(moonCartesian3);
+    // 杈撳嚭杞崲鍚庣殑缁忕含搴﹀潗鏍囧拰楂樺害
+    console.log(moonPosition);
+  },
 };
-export default InitMap;
+export default InitMap;
\ No newline at end of file

--
Gitblit v1.9.3