From 801f2d76b4b6f41247ebe33da59a0981c08bf63b Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期六, 18 三月 2023 14:03:20 +0800
Subject: [PATCH] 数据发布预览

---
 src/components/preview_map.vue |   67 +++++++++++++++++++++++++--------
 1 files changed, 50 insertions(+), 17 deletions(-)

diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue
index 25bd220..cc37652 100644
--- a/src/components/preview_map.vue
+++ b/src/components/preview_map.vue
@@ -23,12 +23,12 @@
   methods: {
     init3DMap() {
       //鍦板浘鍒濆鍖�
-      window.sg = new SmartEarth.SGWorld("mapdiv", {
+      window.sgworld = new SmartEarth.SGWorld("mapdiv", {
         url: SmartEarthRootUrl + "Workers/image/earth.jpg",
         licenseServer: window.sceneConfig.licenseServer,
       });
 
-      window.Viewer = window.sg._Viewer;
+      window.Viewer = window.sgworld._Viewer;
 
       // Viewer.camera.flyTo({
       //   destination: Cesium.Cartesian3.fromDegrees(110, 33, 8000000),
@@ -45,43 +45,76 @@
       //鏄剧ずfps
       Viewer.scene.debugShowFramesPerSecond = false;
       //瀵艰埅鎺т欢
-      window.sg.navControl("nav", false);
+      window.sgworld.navControl("nav", false);
       //姣斾緥灏�
-      window.sg.navControl("scale", false);
+      window.sgworld.navControl("scale", false);
       //寮�鍚繁搴︽娴�
       // sg.Analysis.depthTestAgainstTerrain(true)
       Viewer.scene.globe.depthTestAgainstTerrain = true;
 
-      var option = {
-        url: window.sceneConfig.SGUrl,
-        layerName: window.sceneConfig.mptName,
-        requestVertexNormals: true,
-      };
-      sg.Creator.sfsterrainprovider("", option, "", true, "");
 
-      window.elevationTool = new SmartEarth.ElevationTool(window.sg);
-      elevationTool.setContourColor("#F1D487");
+      // window.elevationTool = new SmartEarth.ElevationTool(window.sg);
+      // elevationTool.setContourColor("#F1D487");
+
       if (this.$store.state.previewLayer) {
         var res = this.$store.state.previewLayer;
-        if (res.layer.indexOf('.png')) {
-          console.log(res.layer)
+
+        if (res.url.indexOf('.png') != -1) {
           var wkt = this.$wkt.parse(res.geom);
           var height = this.getHeight(wkt.coordinates[2])
-          console.log(wkt)
           window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider(
             new Cesium.UrlTemplateImageryProvider({
-              url: res.layer,
+              url: res.url,
               maximumLevel: 18
             })
 
           );
-          debugger
           Viewer.camera.flyTo({
             destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], height),
           });
+        } else if (res.url.indexOf('.json') != -1) {
+          var tileset = Viewer.scene.primitives.add(
+            new Cesium.Cesium3DTileset({
+              url: res.url, //192.168.20.106,to4
+              maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16
+              maximumMemoryUsage: 768, // 鏈�澶у唴瀛橈細512
+              dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse
+              skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
+            })
+          );
+          tileset.readyPromise.then((tileset) => {
+            tileset.id = res.cnName;
+            tileset.layerId = res.id;
+            this.tileSet(tileset, 50)
+            Viewer.flyTo(tileset);
+          });
+        } else {
+
+          Viewer.imageryLayers.removeAll();
+          var url = res.url.split(';')
+          console.log(url)
+
+          sgworld.Creator.createImageryProvider('mpt褰卞儚', "wms", {
+            url: url[0],
+            layers: url[1]
+          }, "0", undefined, true, "");
+
         }
       }
     },
+    tileSet(tileset, height) {
+      //3dtile妯″瀷鐨勮竟鐣岀悆浣�
+      var boundingSphere = tileset.boundingSphere;
+      //杩崱灏旂┖闂寸洿瑙掑潗鏍�=>鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�
+      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
+      //鍦扮悊鍧愭爣锛堝姬搴﹀埗锛�=>杩崱灏旂┖闂寸洿瑙掑潗鏍�
+      var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
+      var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
+      //鑾峰緱鍦伴潰鍜宱ffset鐨勮浆鎹�
+      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
+      //淇敼妯″瀷鐭╅樀
+      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+    },
     getHeight(level) {
       if (level > 0 && level < 23) {
         return this.levelArray[level]

--
Gitblit v1.9.3