From 384fe106ad1efd66ef0910a824bff907322570ea Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期四, 17 八月 2023 15:09:37 +0800
Subject: [PATCH] 图层管理,数据类行加载方式修改

---
 src/assets/js/Map/server.js |  488 +++++++++++++++++++++++++++++++++--------------------
 1 files changed, 301 insertions(+), 187 deletions(-)

diff --git a/src/assets/js/Map/server.js b/src/assets/js/Map/server.js
index 4a127a7..c1064af 100644
--- a/src/assets/js/Map/server.js
+++ b/src/assets/js/Map/server.js
@@ -9,192 +9,204 @@
       this.delLayer(treeNode.id);
       return;
     }
-    // WMTS -> 鍥剧墖
-    // DOM\DEM 褰╄壊\榛戠櫧
-
-    // TMS -> DOM銆丏EM
-    // DOM->鍥剧墖
-    // DEM -> Terrain
-
-    // URL -> URL
-    // TMS -> URL DOM DEM
-    // WMTS -> URL DOM DEM
-    // WMS -> URL
-    // WFS -> URL
-    // Tileset -> URL`
-    //comment on table lf.sys_res is '璧勬簮琛�';
-    // comment on column lf.sys_res.id is '涓婚敭ID';
-    // comment on column lf.sys_res.pid is '鐖禝D锛�0-鏍硅妭鐐�';
-    // comment on column lf.sys_res.cn_name is '涓枃鍚嶇О';
-    // comment on column lf.sys_res.en_name is '鑻辨枃鍚嶇О';
-    // comment on column lf.sys_res.type is '绫诲瀷锛�1-鍥惧眰缁�,2-鏅�氬浘灞�,3-浠g悊鍥惧眰';
-    // comment on column lf.sys_res.status is '鐘舵�侊細-1-搴熷純锛�0-鍋滅敤锛�1-鍚敤';
-    // comment on column lf.sys_res.category is '绫诲瀷锛�0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset';
-    // comment on column lf.sys_res.firm is '鍘傚晢锛�0-鍏朵粬锛�1-GisServer锛�2-GeoServer锛�3-鏁扮畝';
-    // comment on column lf.sys_res.url is '鏈嶅姟鍦板潃';
-    // comment on column lf.sys_res.test is '娴嬭瘯鍦板潃';
-    // comment on column lf.sys_res.proxy is '浠g悊鍦板潃';
-    // comment on column lf.sys_res.descr is '鎻忚堪';
-    // comment on column lf.sys_res.depid is '鍗曚綅缂栫爜';
-    // comment on column lf.sys_res.dirid is '椤圭洰缂栫爜';
-    // comment on column lf.sys_res.img is '缂╃暐鍥�';
-    // comment on column lf.sys_res.level is '灞傜骇锛�0-鏍硅妭鐐�';
-    // comment on column lf.sys_res.sort is '鎺掑簭';
-    // comment on column lf.sys_res.create_user is '鍒涘缓浜篒D';
-    // comment on column lf.sys_res.create_time is '鍒涘缓鏃堕棿';
-    // comment on column lf.sys_res.update_user is '鏇存柊浜篒D';
-    // comment on column lf.sys_res.update_time is '鏇存柊鏃堕棿';
-    // comment on column lf.sys_res.bak is '澶囨敞';
-    //     浠g悊锛�/proxy/{token}/4
-    // 鍦板潃锛歨ttp://192.168.20.83:8088/MoonServer + proxy.replace("{token}", token)
-    // order_num -> sort
-    // serve_type -> category
-
-    // switch (treeNode.type) {
-    //   case 1:
-    //     treeNode.useUrl = treeNode.url;
-    //     break;
-    //   case 2:
-    //     treeNode.useUrl = treeNode.url;
-    //     break;
-    //   case 3:
-    //     treeNode.useUrl = treeNode.url;
-    //     // var token = getToken();
-    //     // treeNode.useUrl = BASE_URL + treeNode.proxy.replace("{token}", token);
-    //     break;
-    // }
-
-
-
-    if (treeNode.resid && treeNode.resid > 0) {
-
+    //鍒ゆ柇鏄惁涓轰唬鐞�
+    if (treeNode.proxy) {
+      this.addProxyAddress(treeNode);//鏈変唬鐞�
     } else {
-      console.log(treeNode)
+      this.addUrlAddress(treeNode);//鏃犱唬鐞�
+    }
+  },
+  //浠g悊鍦板潃
+  addProxyAddress(res) {
+    //鍒ゆ柇鏁版嵁绫诲瀷
+    switch (res.data) {
+      case 1://鏁板瓧姝e皠褰卞儚鍥�
+        this.setDataType(res);
+        break;
+      case 2://鍦烘櫙鍦板舰鏁版嵁
+        this.setTerrainData(res);
+        break;
+      case 3://鏁板瓧楂樼▼妯″瀷锛堟檿娓插浘锛�
+        this.setDataType(res);
+        break;
+      case 4://鍗曟尝娈垫爡鏍兼暟鎹�
+        this.setDataType(res);
+        break;
+      case 5://澶氬厜璋辨爡鏍兼暟鎹�
+        this.setDataType(res);
+        break;
+      case 6://楂樺厜璋辨爡鏍兼暟鎹�
+        this.setDataType(res);
+        break;
+      case 7://鐭㈤噺鍥惧眰
+        this.setVectorData(res);
+        break;
+      case 8://涓夌淮妯″瀷
+        this.setModelData(res);
+        break;
+    }
+  },
+  //鏅�氬湴鍧�
+  addUrlAddress(res) {
+    switch (res.category) {
+      case 0://鍏朵粬
+
+        break;
+      case 1://GisServer
+        this.addProxyAddress(res);
+        break;
+      case 2://GeoServer
+        this.addGeoServerAddress(res);
+        break;
+      case 3://鏁扮畝
+        this.addProxyAddress(res);
+        break;
     }
 
-    this.addGisServer(treeNode);
-    // if (treeNode.firm == 2) {
-    //   this.addGeoServer(treeNode);
-    // } else {
-    //   this.addGisServer(treeNode);
-    // }
   },
-  //娓呴櫎鍥惧眰
-  delLayer(code) {
-    this.layerList.forEach((e, i) => {
-      if (e.id === code) {
-        switch (e.type) {
-          case "wmts":
-            window.Viewer.imageryLayers.remove(e.layerData.item);
-            break;
-          case "tms":
-
-            window.Viewer.imageryLayers.remove(e.layerData.item);
-            break;
-          case "dem":
-            window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(
-              {}
-            );
-            break;
-        }
-        this.layerList.splice(i, 1);
-      }
-    });
-  },
-  addGisServer(treeNode) {
-    // 0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset'; 
-    //鍒ゆ柇鏈嶅姟鏄惁宸插瓨鍦�
-    var service = [];
-    if (this.layerList.length > 0) {
-      service = this.layerList.filter((res) => {
-        if (res.id == treeNode.id) {
-          return res
-        }
-      })
+  //Geoserver鏈嶅姟
+  addGeoServerAddress(res) {
+    //鍒ゆ柇鏁版嵁绫诲瀷
+    switch (res.data) {
+      case 1://鏁板瓧姝e皠褰卞儚鍥�
+        this.setGeoDataType(res);
+        break;
+      case 2://鍦烘櫙鍦板舰鏁版嵁
+        this.setTerrainData(res);
+        break;
+      case 3://鏁板瓧楂樼▼妯″瀷锛堟檿娓插浘锛�
+        this.setGeoDataType(res);
+        break;
+      case 4://鍗曟尝娈垫爡鏍兼暟鎹�
+        this.setGeoDataType(res);
+        break;
+      case 5://澶氬厜璋辨爡鏍兼暟鎹�
+        this.setGeoDataType(res);
+        break;
+      case 6://楂樺厜璋辨爡鏍兼暟鎹�
+        this.setGeoDataType(res);
+        break;
+      case 7://鐭㈤噺鍥惧眰
+        this.setGeoVectorData(res);
+        break;
+      case 8://涓夌淮妯″瀷
+        this.setModelData(res);
+        break;
     }
-    if (service.length > 0) return
-    var url = null;
-    if (treeNode.useUrl && treeNode.useUrl.indexOf('{token}') > -1) {
+  },
+  setGeoDataType() {
+    switch (res.type) {
+      case 0://URL
+        break;
+      case 1://TMS
+        this.setAddTmsLayer(res);
+        break;
+      case 2://WMTS
+        this.setAddWmtsLayer(res);
+        break;
+      case 3://WMS
+        this.setAddGeoWmsLayer(res);
+        break;
+    }
+  },
+  setGeoVectorData(res) {
+    switch (res.type) {
+      case 0://URL
+        break;
+      case 3://WMS
+        this.setAddGeoWmsLayer(res);
+        break;
+      case 4://WFS
+
+        break;
+    }
+  },
+
+
+
+
+
+  setDataType(res) {
+    switch (res.type) {
+      case 0://URL
+        break;
+      case 1://TMS
+        this.setAddTmsLayer(res);
+        break;
+      case 2://WMTS
+        this.setAddWmtsLayer(res);
+        break;
+      case 3://WMS
+        this.setAddWmsLayer(res);
+        break;
+    }
+  },
+
+  setTerrainData(res) {
+    switch (res.type) {
+      case 0://URL
+        this.setAddTearrinLayer(res)
+        break;
+      case 1://TMS
+        this.setAddTearrinLayer(res);
+        break;
+    }
+  },
+  setVectorData(res) {
+    switch (res.type) {
+      case 0://URL
+
+        break;
+      case 3://WMS
+        this.setAddWmsLayer(res);
+        break;
+      case 4://WFS
+
+        break;
+    }
+  },
+  setModelData(res) {
+    switch (res.type) {
+      case 0://Tileset
+        this.setAddModelLayer(res);
+        break;
+      case 3://WMS
+        this.setAddModelLayer(res);
+        break;
+      case 5://WFS
+
+        break;
+    }
+  },
+  //鑾峰彇鏈嶅姟鍦板潃
+  getLayrUrl(res) {
+    var url;
+    if (res.proxy) {
       const token = getToken()
-      url = config.BASE_URL + treeNode.proxy.replaceAll("{token}", token)
+      url = config.proxy + res.proxy.replaceAll("{token}", token)
     } else {
-      url = treeNode.useUrl
+      url = res.url;
     }
-    switch (treeNode.type) {
-      case 1:
-        this.AddTmsLayer(url, treeNode.data, treeNode.id);
-        break;
-      case 2:
-        this.AddWmtesLayer(url, treeNode.id);
-        break;
-      case 3:
-        break;
-      case 4:
-        break;
-    }
+    return url
   },
-  addGeoServer(treeNode) {
-    // 0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset';
-    switch (treeNode.type) {
-      case 1:
-        break;
-      case 2:
-        this.AddGeoWmsLayer(treeNode.useUrl, treeNode.id, treeNode.tab);
-        break;
-      case 3:
-        break;
-      case 4:
-        break;
-    }
-  },
-  //娣诲姞geoserver鏈嶅姟wms鏈嶅姟
-  AddGeoWmsLayer(url, id, tab) {
-    let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({
-      // url: "http://192.168.22.198:8090/geoserver/moon/wms",
-      url: url,
-      layers: tab,
-      parameters: {
-        transparent: true,
-        format: "image/png",
-        srs: "EPSG:104903",
-        styles: "",
+  //鍔犺浇TMS鏈嶅姟
+  setAddTmsLayer(res) {
+    var url = this.getLayrUrl(res)
+    let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider(
+      "tms鏈嶅姟",
+      {
+        url: Cesium.buildModuleUrl(url + "/{z}/{x}/{y}.png"),
       },
-      tileWidth: 512,
-      tileHeight: 512,
-    });
-    layer.name = `Wms_Layer${id}`;
-
-    let img_layer = Viewer.imageryLayers.addImageryProvider(layer);
-    this.layerList.push({ id: id, layerData: img_layer, type: "wmts" });
+      "0",
+      undefined,
+      true,
+      ""
+    );
+    this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" });
   },
-  //娣诲姞GisServer鏈嶅姟TMS鍒囩墖鏈嶅姟
-  AddTmsLayer(url, data, id) {
-    // var urlTemplateImageryProvider = new SmartEarth.Cesium.UrlTemplateImageryProvider({
-    //   url: url + "/{z}/{x}/{y}.png"
-    // });
-    // Viewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider);
-
-    if (data == '0' || data == '1') {
-      let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider(
-        "tms鏈嶅姟",
-        {
-          url: Cesium.buildModuleUrl(url + "/{z}/{x}/{y}.png"),
-        },
-        "0",
-        undefined,
-        true,
-        ""
-      );
-      this.layerList.push({ id: id, layerData: img_layer, type: "tms" });
-    } else if (data == '2') {
-      window.terrainLayer = new Cesium.CesiumTerrainProvider({
-        url: url
-      });
-      Viewer.terrainProvider = window.terrainLayer
-      this.layerList.push({ id: id, type: "dem", });
-    }
-  },
-  AddWmtesLayer(url, id) {
+  //鍔犺浇WMTS鏈嶅姟
+  setAddWmtsLayer(res) {
+    var url = this.getLayrUrl(res)
     var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({
       sourceType: "wmts",
       url: url,
@@ -227,25 +239,127 @@
         ellipsoid: Cesium.Ellipsoid.MOON,
       }),
     });
-    console.log(urlTemplateImageryProvider);
     this.layerList.push({
-      id: id,
+      id: res.id,
       layerData: urlTemplateImageryProvider._primitive,
       type: "wmts",
     });
   },
-  AddDemLayer(url, id) {
-    var terrain = new Cesium.CesiumTerrainProvider({
-      url: config.moonTerrain,
-      // url: url,
-      tilingScheme: new Cesium.GeographicTilingScheme({
-        ellipsoid: Cesium.Ellipsoid.MOON,
-      }),
+  //鍔犺浇鍦板舰鏈嶅姟
+  setAddTearrinLayer(res) {
+    this.setChangeTearrinLayer();
+    var url = this.getLayrUrl(res)
+    window.terrainLayer = new Cesium.CesiumTerrainProvider({
+      url: url
     });
-    window.Viewer.terrainProvider = terrain;
+    Viewer.terrainProvider = window.terrainLayer
+    this.layerList.push({ id: res.id, type: "dem", });
+  },
+  //鍔犺浇WMS鏈嶅姟
+  setAddWmsLayer(res) {
+    var url = this.getLayrUrl(res)
+    var img_layer = sgworld.Creator.createImageryProvider('giserver', "wms", {
+      url: url,
+      layers: '',
+      parameters: {
+        format: "image/png",
+        transparent: true,
+      }
+    }, "0", undefined, true, "");
+    this.layerList.push({
+      id: res.id,
+      layerData: img_layer,
+      type: "wmts",
+    });
 
-    // let img_layer = Viewer.imageryLayers.addImageryProvider(layer);
-    this.layerList.push({ id: id, type: "dem" });
+  },
+  //鍔犺浇妯″瀷鏈嶅姟
+  setAddModelLayer(res) {
+    var url = this.getLayrUrl(res);
+    let tileset = Viewer.scene.primitives.add(
+      new Cesium.Cesium3DTileset({
+        name: res.cnName,
+        url: url,
+        skipLevelOfDetail: true, // 鍦ㄩ亶鍘嗘椂鍊欒烦杩囪鎯咃細false
+        baseScreenSpaceError: 1024,
+        maximumScreenSpaceError: 64, // 鏈�澶у睆骞曠┖闂撮敊璇細16锛屾暟鍊煎姞澶ц兘璁╂渶缁堟垚鍍忓彉妯$硦
+        skipScreenSpaceErrorFactor: 16,
+        skipLevels: 1,
+        immediatelyLoadDesiredLevelOfDetail: false,
+        loadSiblings: true, // 鑷姩浠庝腑蹇冨紑濮嬭秴娓呭寲妯″瀷锛歠alse
+        cullWithChildrenBounds: true, // 浣跨敤瀛愰」杈圭晫浣撶Н鐨勫苟闆嗘潵鍓旈櫎鍥惧潡锛歵rue
+        cullRequestsWhileMoving: true,
+        cullRequestsWhileMovingMultiplier: 10, // 鍊艰秺灏忚兘澶熸洿蹇殑鍓旈櫎锛�60
+        preloadWhenHidden: true,
+        preferLeaves: true, // 棰勮瀛愯妭鐐癸細false
+        maximumMemoryUsage: 768, // 鍐呭瓨鍒嗛厤鍙樺皬鏈夊埄浜庡唴瀛樺洖鏀讹紝鎻愬崌鎬ц兘浣撻獙
+        progressiveResolutionHeightFraction: 0.5, // 鏁板�煎亸浜�0鑳藉璁╁垵濮嬪姞杞藉彉寰楁ā绯�
+        dynamicScreenSpaceErrorDensity: 0.5, // 鏁板�煎姞澶э紝鑳借鍛ㄨ竟鍔犺浇鍙樺揩
+        dynamicScreenSpaceErrorFactor: 2, // 鍔ㄦ�佸睆骞曠┖闂磋宸殑绯绘暟
+        dynamicScreenSpaceError: true, // 鍑忓皯绂荤浉鏈鸿緝杩滅殑灞忓箷绌洪棿閿欒锛歠alse锛屽叏灞忓姞杞藉畬涔嬪悗鎵嶆竻鏅板寲鎴垮眿
+      })
+
+    );
+    tileset.readyPromise.then((tileset) => {
+      tileset.id = res.id;
+    });
+  },
+  //鍦板舰绉婚櫎浜嬩欢
+  setChangeTearrinLayer() {
+    this.layerList.forEach((e, i) => {
+      switch (e.type) {
+        case "dem":
+          window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(
+            {}
+          );
+          this.layerList.splice(i, 1);
+          break;
+      }
+    })
+  },
+
+  //娓呴櫎鍥惧眰
+  delLayer(code) {
+    this.layerList.forEach((e, i) => {
+      if (e.id === code) {
+        switch (e.type) {
+          case "wmts":
+            debugger
+            window.Viewer.imageryLayers.remove(e.layerData);
+            break;
+          case "tms":
+            window.Viewer.imageryLayers.remove(e.layerData);
+            break;
+          case "dem":
+            window.Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(
+              {}
+            );
+            break;
+          case "":
+            break;
+        }
+        this.layerList.splice(i, 1);
+      }
+    });
+  },
+  //鍔犺浇GeoServer-WMS鏈嶅姟
+  setAddGeoWmsLayer(res) {
+    var url = this.getLayrUrl(res);
+    let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({
+      url: url,
+      layers: res.tab,
+      parameters: {
+        transparent: true,
+        format: "image/png",
+        srs: "EPSG:104903",
+        styles: "",
+      },
+      tileWidth: 512,
+      tileHeight: 512,
+    });
+    layer.name = `Wms_Layer${res.id}`;
+    let img_layer = window.Viewer.imageryLayers.addImageryProvider(layer);
+    this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" });
   },
 };
 export default server;

--
Gitblit v1.9.3