From 3ddb9448058989b4f3662e38d45fc1d887c337cf Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期四, 24 八月 2023 17:08:48 +0800
Subject: [PATCH] 投影图层管理功能修改

---
 /dev/null                                       |  321 ---------------------
 src/views/baseMapSwitching/baseMapSwitching.vue |   54 ++-
 src/api/api.js                                  |    9 
 src/assets/js/Map/server.js                     |   23 +
 src/views/layer/layerManage.vue                 |   25 +
 src/assets/js/Map/projectionServer.js           |  409 +++++++++++++++++++++++++++
 src/store/index.ts                              |    1 
 7 files changed, 497 insertions(+), 345 deletions(-)

diff --git a/src/api/api.js b/src/api/api.js
index e6a93e0..5f662c2 100644
--- a/src/api/api.js
+++ b/src/api/api.js
@@ -70,3 +70,12 @@
 export function dataQuery_selectByGid(params) {
   return request.get('/dataQuery/selectByGid', { params: params });
 }
+
+//鎺堟潈绠$悊=>鏌ヨ褰撳墠鐢ㄦ埛鐨勬姇褰卞浘灞傛巿鏉�
+export function perms_selectProjectLayers(params) {
+  return request.get('/perms/selectProjectLayers', { params: params });
+}
+
+
+
+
diff --git a/src/assets/js/Map/projectionServer.js b/src/assets/js/Map/projectionServer.js
new file mode 100644
index 0000000..40d54f5
--- /dev/null
+++ b/src/assets/js/Map/projectionServer.js
@@ -0,0 +1,409 @@
+import { getToken } from "@/utils/auth";
+//閰嶇疆鏂囦欢鍦板潃
+import config from "./config";
+import store from "@/store";
+const projection = {
+  layerList: [],
+  addTreeData(treeNode) {
+    this.delLayerAll();
+    //鍒ゆ柇鏄惁涓轰唬鐞�
+    if (treeNode.proxy) {
+      this.addProxyAddress(treeNode); //鏈変唬鐞�
+    } else {
+      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;
+    }
+  },
+  //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;
+    }
+  },
+  setGeoDataType(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.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.proxy + res.proxy.replaceAll("{token}", token);
+    } else {
+      url = res.url;
+    }
+    return url;
+  },
+  //鍔犺浇TMS鏈嶅姟
+  setAddTmsLayer(res) {
+    var url = this.getLayrUrl(res);
+    let img_layer = earthCtrl.Creator.createUrlTemplateImageryProvider(
+      "tms鏈嶅姟",
+      {
+        url: Cesium.buildModuleUrl(url + "/{z}/{x}/{reverseY}.png"),
+      },
+      "0",
+      undefined,
+      true,
+      ""
+    );
+    this.layerList.push({ id: res.id, layerData: img_layer, type: "tms" });
+  },
+  //鍔犺浇WMTS鏈嶅姟
+  setAddWmtsLayer(res) {
+    var url = this.getLayrUrl(res);
+    var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({
+      sourceType: "wmts",
+      url: url,
+      layer: "",
+      format: "image/png",
+      tileMatrixSetID: "GoogleCRS84Quad01",
+      tileMatrixLabels: [
+        "0",
+        "1",
+        "2",
+        "3",
+        "4",
+        "5",
+        "6",
+        "7",
+        "8",
+        "9",
+        "10",
+        "11",
+        "12",
+        "13",
+        "14",
+        "15",
+        "16",
+        "17",
+        "18",
+      ],
+      style: "",
+      tilingScheme: new Cesium.GeographicTilingScheme({
+        ellipsoid: Cesium.Ellipsoid.MOON,
+      }),
+    });
+    this.layerList.push({
+      id: res.id,
+      layerData: urlTemplateImageryProvider._primitive,
+      type: "wmts",
+    });
+  },
+  //鍔犺浇鍦板舰鏈嶅姟
+  setAddTearrinLayer(res) {
+    this.setChangeTearrinLayer();
+    var url = this.getLayrUrl(res);
+    window.terrainLayer = new Cesium.CesiumTerrainProvider({
+      url: url,
+    });
+    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",
+    });
+  },
+  //鍔犺浇妯″瀷鏈嶅姟
+  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;
+    });
+    this.layerList.push({ id: res.id, layerData: tileset, type: "tileset" });
+  },
+  //鍦板舰绉婚櫎浜嬩欢
+  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":
+            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 "tileset":
+            window.Viewer.scene.primitives.remove(e.layerData)
+            break;
+        }
+        this.layerList.splice(i, 1);
+      }
+    });
+  },
+
+  delLayerAll() {
+    this.layerList.forEach((e, i) => {
+      switch (e.type) {
+        case "wmts":
+          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 "tileset":
+          window.Viewer.scene.primitives.remove(e.layerData)
+          break;
+      }
+      this.layerList.splice(i, 1);
+    });
+    this.layerList = [];
+  },
+  //鍔犺浇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" });
+  },
+  getFeatureInfo(html) {
+    store.state.details.showDetails = false;
+    var start = html.indexOf("<caption class=\"featureInfo\">") + "<caption class=\"featureInfo\">".length;
+    var end = html.indexOf("</caption>");
+    var tab = html.substr(start, end - start);
+    var std = html.substr(html.indexOf('<th>'), html.lastIndexOf('</th>') - html.indexOf('<th>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</th>')
+    var gindex = null;
+    for (var i = 0; i < std.length; i++) {
+      if (std[i].indexOf('gid') > -1) {
+        gindex = i;
+        break;
+      }
+    }
+    if (!gindex) return
+    var str = html.substr(html.indexOf('<td>'), html.lastIndexOf('</td>') - html.indexOf('<td>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</td>')
+    var gid = parseInt(str[gindex].replaceAll(
+      '<td>', ''
+    ))
+    if (gid && tab) {
+
+      store.state.details = {
+        gid: gid,
+        tab: tab,
+        showDetails: true
+      }
+    }
+
+  },
+};
+export default projection;
diff --git a/src/assets/js/Map/server copy.js b/src/assets/js/Map/server copy.js
deleted file mode 100644
index b7dfc89..0000000
--- a/src/assets/js/Map/server copy.js
+++ /dev/null
@@ -1,321 +0,0 @@
-import { getToken } from "@/utils/auth";
-//閰嶇疆鏂囦欢鍦板潃
-import config from "./config";
-
-const server = {
-  layerList: [],
-  addTreeData(treeNode) {
-    if (!treeNode.checked) {
-      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;
-    //   
-    //     break;
-    // }
-
-
-    //
-    // if (treeNode.resid && treeNode.resid > 0) {
-
-    // } else {
-
-    // }
-
-    //鍒ゆ柇鏄惁浠g悊
-    //treeNode.proxy鏈夋暟鎹唬鐞�,鏁版嵁涓嶄唬鐞�
-
-
-    if (treeNode.proxy) {
-      this.addProxyAddress(treeNode);//鏈変唬鐞�
-    } else {
-      this.addUrlAddress(treeNode);//鏃犱唬鐞�
-    }
-
-
-    // this.addGisServer(treeNode);
-    // if (treeNode.firm == 2) {
-    //   this.addGeoServer(treeNode);
-    // } else {
-    //   this.addGisServer(treeNode);
-    // }
-  },
-  addProxyAddress(res) {
-    switch (res.data) {
-      case 1://dom
-        this.addGisServer(res)
-        break;
-      case 2://鍦板舰
-        this.addGisServer(res)
-        break;
-      case 3:
-        this.addGisServer(res)
-        break;
-      case 4:
-        this.addGisServer(res)
-        break;
-      case 5:
-        this.addGisServer(res)
-        break;
-      case 6:
-        this.addGisServer(res)
-        break;
-      case 7:
-        this.addGisServer(res)
-        break;
-      case 8:
-        break;
-    }
-  },
-
-  addUrlAddress(res) {
-    switch (res.data) {
-      case 1://dom
-        this.addGeoServer(res)
-        break;
-      case 2://鍦板舰
-        this.addGeoServer(res)
-        break;
-      case 3:
-        this.addGeoServer(res)
-        break;
-      case 4:
-        this.addGeoServer(res)
-        break;
-      case 5:
-        this.addGeoServer(res)
-        break;
-      case 6:
-        this.addGeoServer(res)
-        break;
-      case 7:
-        this.addGeoServer(res)
-        break;
-      case 8:
-        break;
-    }
-  },
-
-
-  //娓呴櫎鍥惧眰
-  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
-        }
-      })
-    }
-    if (service.length > 0) return
-    var url = null;
-
-    if (treeNode.proxy && treeNode.proxy.indexOf('{token}') > -1) {
-      const token = getToken()
-      url = config.proxy + treeNode.proxy.replaceAll("{token}", token)
-    }
-    console.log(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;
-    }
-  },
-  addGeoServer(treeNode) {
-    // 0-URL锛�1-TMS锛�2-WMTS锛�3-WFS锛�4-Tileset';
-
-    switch (treeNode.type) {
-      case 1:
-        break;
-      case 2:
-
-        break;
-      case 3:
-        this.AddGeoWmsLayer(treeNode.url, treeNode.id, treeNode.tab);
-        break;
-      case 4:
-        break;
-    }
-  },
-  //娣诲姞geoserver鏈嶅姟wms鏈嶅姟
-  AddGeoWmsLayer(url, id, tab) {
-    if (!tab) return
-
-    let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({
-      // url: "http://192.168.22.198:8090/geoserver/moon/wms",
-      url: url,
-      layers: "moon:geo_alkaline_rock_suite",
-      parameters: {
-        transparent: true,
-        format: "image/png",
-        srs: "EPSG:104903",
-        styles: "",
-      },
-      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" });
-  },
-  //娣诲姞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) {
-    var urlTemplateImageryProvider = earthCtrl.factory.createImageryLayer({
-      sourceType: "wmts",
-      url: url,
-      layer: "",
-      format: "image/png",
-      tileMatrixSetID: "GoogleCRS84Quad01",
-      tileMatrixLabels: [
-        "0",
-        "1",
-        "2",
-        "3",
-        "4",
-        "5",
-        "6",
-        "7",
-        "8",
-        "9",
-        "10",
-        "11",
-        "12",
-        "13",
-        "14",
-        "15",
-        "16",
-        "17",
-        "18",
-      ],
-      style: "",
-      tilingScheme: new Cesium.GeographicTilingScheme({
-        ellipsoid: Cesium.Ellipsoid.MOON,
-      }),
-    });
-    console.log(urlTemplateImageryProvider);
-    this.layerList.push({
-      id: 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,
-      }),
-    });
-    window.Viewer.terrainProvider = terrain;
-
-    // let img_layer = Viewer.imageryLayers.addImageryProvider(layer);
-    this.layerList.push({ id: id, type: "dem" });
-  },
-};
-export default server;
diff --git a/src/assets/js/Map/server.js b/src/assets/js/Map/server.js
index 65ea768..067126a 100644
--- a/src/assets/js/Map/server.js
+++ b/src/assets/js/Map/server.js
@@ -338,6 +338,29 @@
       }
     });
   },
+
+  delLayerAll() {
+    this.layerList.forEach((e, i) => {
+      switch (e.type) {
+        case "wmts":
+          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 "tileset":
+          window.Viewer.scene.primitives.remove(e.layerData)
+          break;
+      }
+      this.layerList.splice(i, 1);
+    });
+
+  },
   //鍔犺浇GeoServer-WMS鏈嶅姟
   setAddGeoWmsLayer(res) {
     var url = this.getLayrUrl(res);
diff --git a/src/store/index.ts b/src/store/index.ts
index 29cfd72..38a190b 100644
--- a/src/store/index.ts
+++ b/src/store/index.ts
@@ -26,6 +26,7 @@
       tab: null,
       showDetails: false,
     },
+    restLayer: false,
   },
   mutations: {
     //鑾峰彇鐧诲綍Code
diff --git a/src/views/baseMapSwitching/baseMapSwitching.vue b/src/views/baseMapSwitching/baseMapSwitching.vue
index 9755b1c..835953d 100644
--- a/src/views/baseMapSwitching/baseMapSwitching.vue
+++ b/src/views/baseMapSwitching/baseMapSwitching.vue
@@ -8,7 +8,7 @@
         <div class="titleImg">
           <ArrowLeft />
         </div>
-        <div class="titleLable"></div>
+        <div class="titleLable"> 鎶曞奖鍥惧眰绠$悊</div>
       </div>
     </div>
     <div class="baseMapSwitching_content">
@@ -17,9 +17,10 @@
           class="baseMapSwitching_list_tr"
           v-for="(item, i) in list"
           :key="i"
+          @click="setProjectionLayerChange(item)"
         >
           <div class="baseMapSwitching_list_tr_name">
-            <span>{{ item.name }}</span>
+            <span :class="{  'baseMapActive' : activceIndex == item.id}">{{item.cnName }}</span>
           </div>
         </div>
       </div>
@@ -36,23 +37,33 @@
   defineProps,
   defineEmits,
 } from "vue";
-let list = ref([
-  {
-    name: "绛夎窛绂绘煴鎶曞奖 ( <75)",
-    type: "poi",
-    icon: "d.png",
-  },
-  {
-    name: "鍖楁瀬骞抽潰鎶曞奖",
-    type: "line",
-    icon: "x.png",
-  },
-  {
-    name: "鍗楁瀬骞抽潰鎶曞奖",
-    type: "cover",
-    icon: "m.png",
-  },
-]);
+import { perms_selectProjectLayers } from "@/api/api";
+import server from "@/assets/js/Map/server";
+import store from "@/store";
+
+import projection from "@/assets/js/Map/projectionServer";
+let list = ref([]);
+const activceIndex = ref();
+const setProjectionLayerChange = (res) => {
+  server.delLayerAll();
+  projection.addTreeData(res);
+  activceIndex.value = res.id;
+  store.state.restLayer = true;
+};
+const getProjectionLayer = async () => {
+  const data = await perms_selectProjectLayers();
+  if (data.code != 200) return;
+  var result = data.result.filter((res) => {
+    if (res.isLayer == 1) {
+      return res;
+    }
+  });
+  list.value = result.reverse();
+  if (!activceIndex.value) {
+    setProjectionLayerChange(list.value[0]);
+  }
+};
+getProjectionLayer();
 </script>
 
 <style lang="less" scoped>
@@ -78,7 +89,7 @@
       align-items: center;
 
       .titleLable {
-        font-size: 24px;
+        font-size: 18px;
         font-family: Source Han Sans CN;
         font-weight: 400;
         color: #ffffff;
@@ -122,6 +133,9 @@
           margin-left: 10px;
         }
       }
+      .baseMapActive {
+        color: #73a1fa !important;
+      }
     }
   }
 }
diff --git a/src/views/layer/layerManage.vue b/src/views/layer/layerManage.vue
index 623181b..e686c42 100644
--- a/src/views/layer/layerManage.vue
+++ b/src/views/layer/layerManage.vue
@@ -97,6 +97,7 @@
   defineProps,
   defineEmits,
   nextTick,
+  watch,
 } from "vue";
 import layerSet from "./layerSet";
 import attributeList from "./attributeList";
@@ -147,12 +148,17 @@
   let isCheck = checked.checkedKeys.indexOf(data.id) > -1;
   // this.setVisiable(data, isCheck);
 
-  let son = estreeRef.value.getCheckedNodes();
-
+  let son = estreeRef.value.getCheckedNodes().reverse();
+  server.delLayerAll();
+  for (var i in son) {
+    var layerArr = son[i];
+    layerArr.checked = true;
+    server.addTreeData(layerArr);
+  }
   store.commit("SET_CHECKLAYER", son);
-  setVisiable(data, isCheck);
+  // setVisiable(data, isCheck);
 
-  // server.addLayer(layerArr, isCheck);
+  //
 };
 const setVisiable = (treeNode, checked) => {
   if (checked !== undefined) {
@@ -250,6 +256,8 @@
 };
 
 const getLayer = async () => {
+  store.state.restLayer = false;
+  server.delLayerAll();
   const dt = await perms_selectLayers();
   if (dt.code == 200) {
     treeData.value = setTreeData(dt.result).sort(function (a, b) {
@@ -300,6 +308,15 @@
     return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
   });
 }
+watch(
+  () => store.state.restLayer,
+  (nVal, oVal) => {
+    if (nVal) {
+      getLayer();
+    }
+  },
+  { deep: true }
+);
 getLayer();
 onMounted(() => {});
 </script>

--
Gitblit v1.9.3