From 9398f14feea7ad8b7d00ce7d2bb2e5362cec59d3 Mon Sep 17 00:00:00 2001
From: surprise <15810472099@163.com>
Date: 星期二, 09 一月 2024 15:20:15 +0800
Subject: [PATCH] 代码提交

---
 src/assets/js/Layer/menuGrid.js |  155 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 151 insertions(+), 4 deletions(-)

diff --git a/src/assets/js/Layer/menuGrid.js b/src/assets/js/Layer/menuGrid.js
index 130be82..2bfa1de 100644
--- a/src/assets/js/Layer/menuGrid.js
+++ b/src/assets/js/Layer/menuGrid.js
@@ -1,13 +1,160 @@
+import parse from "qs/lib/parse";
+import store from "../../../store";
+import * as turf from '@turf/turf';
 const menuGrid = {
+    geom: [],
     init() {
-        console.log(123)
+        var that = this;
         var grid = sgworld.Creator.createSimpleGraphic(
-            "rectangle",
+            "point",
             {
                 // clampToGround: false
-            }, entity => {
-
+            }, (entity) => {
+                var val = that.setCartesianToEightFour(entity.position.getValue())
+                that.geom.push([parseFloat(val.lng), parseFloat(val.lat)])
+                sgworld.Creator.SimpleGraphic.remove(entity.id);
+                if (this.geom.length < 2) {
+                    that.init();
+                } else {
+                    store.state.isshowGrid = true;
+                }
             })
     },
+    setTurfGrid(res, geom) {
+
+        var box = [parseFloat(geom[0][0]), parseFloat(geom[0][1]), parseFloat(geom[1][0]), parseFloat(geom[1][1])]
+        this.geom = [];
+        var options = { units: "meters" };
+        var squareGrid = turf.squareGrid(box, res.cellSide, options);
+        var features = [];
+        for (var i = 0; i < squareGrid.features.length; i++) {
+            var coord = squareGrid.features[i].geometry.coordinates[0];
+            var coordinates = [];
+            for (var j in coord) {
+                coordinates.push([coord[j][0], coord[j][1], 18])
+            }
+            features.push({
+                "type": "Feature", "properties": {
+                    "NAME": '鏂板缓鏍肩綉' + (i + 1),
+                    "bak": ''
+                },
+                "geometry": {
+                    "type": "Polygon", "coordinates": [
+                        coordinates
+                    ]
+                }
+            })
+        }
+        var obj = {
+            "type": "FeatureCollection",
+            "name": "鏂板缓鏍肩綉",
+            "crs": {
+                "type": "name",
+                "properties": {
+                    "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
+                }
+            },
+            "features": features
+        }
+        this.adddDataSource(obj)
+    },
+
+    adddDataSource(res) {
+        var data = Cesium.GeoJsonDataSource.load(res, //瑕佸姞杞界殑 url銆丟eoJSON 瀵硅薄鎴� TopoJSON 瀵硅薄銆�
+            {
+                stroke: Cesium.Color.RED, //鎶樼嚎鍜屽杈瑰舰杞粨鐨勯粯璁ら鑹层��
+                fill: Cesium.Color.WHITE.withAlpha(0.2), //澶氳竟褰㈠唴閮ㄧ殑榛樿棰滆壊銆�
+                strokeWidth: 3, //鎶樼嚎鍜屽杈瑰舰杞粨鐨勯粯璁ゅ搴︺��
+            }
+        )
+        data.then((dataSource) => {
+            Viewer.dataSources.add(
+                dataSource
+            );
+        })
+    },
+
+    setOtherGrid(res, geom) {
+        var maxlon, minlon, maxlat, minlat;
+        console.log(geom)
+        if (parseFloat(geom[0][0]) > parseFloat(geom[1][0])) {
+            maxlon = parseFloat(geom[0][0]);
+            minlon = parseFloat(geom[1][0]);
+        } else {
+            maxlon = parseFloat(geom[1][0]);
+            minlon = parseFloat(geom[0][0]);
+        }
+        if (parseFloat(geom[0][1]) > parseFloat(geom[1][1])) {
+            maxlat = geom[0][1];
+            minlat = geom[1][1];
+        } else {
+            maxlat = geom[1][1];
+            minlat = geom[0][1];
+        }
+        var row = 3;
+        var col = 3;
+        var lon_dis = (parseFloat(maxlon) - parseFloat(minlon)) / 3;
+        var lat_dis = (parseFloat(maxlat) - parseFloat(minlat)) / 3;
+        console.log(lon_dis, minlon)
+        for (var i = 0; i < col; i++) {
+            for (var j = 0; j < row; j++) {
+                var startlon = parseFloat(minlon + (j * lon_dis)) 
+                var startlat = parseFloat(minlat + (i * lat_dis)) 
+                var endlon = parseFloat(minlon + ((j + 1) * lon_dis)) 
+                var endlat = parseFloat(minlat + ((i + 1) * lat_dis)) 
+                var positions = [
+                    parseFloat(startlon), parseFloat(startlat),  parseFloat(endlon), parseFloat(startlat),  
+                    parseFloat(endlon), parseFloat(endlat),  parseFloat(startlon), parseFloat(endlat),   parseFloat(startlon), parseFloat(startlat) 
+                ]
+            
+                   
+                Viewer.entities.add({
+                    name: "polygon_height",
+                    polygon: {
+                        show: true,
+                        hierarchy: new Cesium.Cartesian3.fromDegreesArray(positions),
+                        height: 18,
+                        material: Cesium.Color.CYAN.withAlpha(0.5),
+                        outline: true,
+                        outlineColor: Cesium.Color.BLACK,
+                    }
+                })
+          
+
+
+            }
+        }
+    },
+
+
+    setGridRowCol(res) {
+        store.state.isshowGrid = false;
+        var geom = this.geom;
+        // this.setTurfGrid(res,geom)
+        this.setOtherGrid(res, geom);
+
+    },
+    toFixed(res) {
+        return parseFloat(res).toFixed(6)
+    },
+    setdistance(start, end) {
+        var from = turf.point(start);
+        var to = turf.point(end);
+        var distance = turf.distance(from, to, {
+            units: 'meters'
+        });
+        return distance
+    },
+
+
+    setCartesianToEightFour(res) {
+        var std = {};
+        let ellipsoid = window.Viewer.scene.globe.ellipsoid;
+        let cartographic = ellipsoid.cartesianToCartographic(res);
+        std.lat = Cesium.Math.toDegrees(cartographic.latitude);
+        std.lng = Cesium.Math.toDegrees(cartographic.longitude);
+        std.alt = cartographic.height;
+        return std;
+    }
 }
 export default menuGrid;
\ No newline at end of file

--
Gitblit v1.9.3