月球大数据地理空间分析展示平台-【前端】-月球2期前端
Surpriseplus
2023-08-16 4401f18284cd0e9ed262d18a4ad28a17fdb2655a
src/assets/js/Map/server.js
@@ -1,16 +1,251 @@
import { getToken } from "@/utils/auth";
//配置文件地址
import config from "./config";
const server = {
    //添加GisServer服务TMS切片服务
    AddTmsLayer(url) {
        var urlTemplateImageryProvider = new SmartEarth.Cesium.UrlTemplateImageryProvider({
            url: url + "/{z}/{x}/{reverseY}.png",
            maximumLevel: 4,
            minimumLevel: 1,
            tilingScheme: new SmartEarth.Cesium.GeographicTilingScheme({
                numberOfLevelZeroTilesX: 2,
                numberOfLevelZeroTilesY: 1,
            }),
        });
        window.Viewer.imageryLayers.addImageryProvider(urlTemplateImageryProvider);
    },
}
export default server;
  layerList: [],
  addTreeData(treeNode) {
    if (!treeNode.checked) {
      this.delLayer(treeNode.id);
      return;
    }
    // WMTS -> 图片
    // DOM\DEM 彩色\黑白
    // TMS -> DOM、DEM
    // 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 '父ID: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-代理图层';
    // 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 '代理地址';
    // 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 '创建人ID';
    // comment on column lf.sys_res.create_time is '创建时间';
    // comment on column lf.sys_res.update_user is '更新人ID';
    // comment on column lf.sys_res.update_time is '更新时间';
    // comment on column lf.sys_res.bak is '备注';
    //     代理:/proxy/{token}/4
    // 地址:http://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) {
    } else {
      console.log(treeNode)
    }
    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
        }
      })
    }
    if (service.length > 0) return
    var url = null;
    if (treeNode.useUrl && treeNode.useUrl.indexOf('{token}') > -1) {
      const token = getToken()
      url = config.BASE_URL + treeNode.proxy.replaceAll("{token}", token)
    } else {
      url = treeNode.useUrl
    }
    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:
        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: "",
      },
      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;