月球大数据地理空间分析展示平台-【前端】-月球2期前端
surprise
2023-11-29 36fbd1e5a40e319e6ac5f43d11c99ba4b66e93a3
src/assets/js/Map/menuTool.js
@@ -20,6 +20,7 @@
  },
  exportSquare: null,
  imageryProvider: null,
  legendBox: null,
  topTools(res) {
    this.toolFlag = res.id;
@@ -111,9 +112,9 @@
    Viewer.animation.container.style.visibility = "visible";
    Viewer.timeline.container.style.visibility = "visible";
    earthCtrl.shadows = true;
     earthCtrl.terrainShadows = SmartEarth.Cesium.ShadowMode.ENABLED
    earthCtrl.terrainShadows = SmartEarth.Cesium.ShadowMode.ENABLED
     earthCtrl.shadowMap.size = 1024
    earthCtrl.shadowMap.size = 1024
  },
  setLocalPosition(res) {
    if (this.localPoint) {
@@ -142,6 +143,71 @@
  },
  //坡度分析
  setSlopeMap() {
    if (window.esriLayer) {
      this.setCloseEsriLayer();
      return
    }
    sgworld.Creator.createSimpleGraphic('rectangle', {}, (entity) => {
      if (entity) {
        var west = Cesium.Math.toDegrees(
          entity.rectangle._coordinates.getValue().west
        ); // 根据弧度获取到经度
        var east = Cesium.Math.toDegrees(
          entity.rectangle._coordinates.getValue().east
        ); // 根据弧度获取到纬度
        var north = Cesium.Math.toDegrees(
          entity.rectangle._coordinates.getValue().north
        ); // 根据弧度获取到经度
        var south = Cesium.Math.toDegrees(
          entity.rectangle._coordinates.getValue().south
        ); // 根据弧度获取到纬度
        sgworld.Creator.SimpleGraphic.clear();
        this.legendBox = [
          west, south, east, north
        ]
        this.addTMSLayer(this.legendBox)
      }
    });
  },
  addTMSLayer(obj) {
    var esri = new Cesium.WebMapServiceImageryProvider({
      url: config.esri,
      name: 'esriLayer',
      rectangle: Cesium.Rectangle.fromDegrees(obj[0], obj[1], obj[2], obj[3]),
      crs: 'EPSG:4326',
      //transparent: true
      parameters: {
        format: "image/png",
        layers: [0]
      }
    });
    window.esriLayer = Viewer.imageryLayers.addImageryProvider(esri);
    store.state.showlegendLayer = true;
  },
  setSlopeMap1() {
    const globe = Viewer.scene.globe;
    if (window.material) {
      window.material = null;
@@ -167,6 +233,10 @@
    Viewer.scene.globe.material = window.material;
  },
  setImageLayerChange() {
    if (window.esriLayer) {
      Viewer.imageryLayers.raiseToTop(window.esriLayer);
    }
    if (this.imageryProvider) {
      Viewer.imageryLayers.raiseToTop(this.imageryProvider);
    }
@@ -199,10 +269,10 @@
    if (window.material) {
      window.material = null;
      globe.material = null;
      store.state.slopeQueyFlag = false;
      store.state.showSlopeQuey = false;
      return;
    }
@@ -219,9 +289,9 @@
    contourUniforms.spacing = 100.0;
    contourUniforms.color = contourColor;
    globe.material = window.material;
  },
  zeroFill(num, len, radix) {
    var str = num.toString(radix || 10)
    while (str.length < len) {
@@ -434,9 +504,9 @@
        break;
      case "l3": //在线制图
        store.state.isShowMap = true;
         setTimeout(() => {
        setTimeout(() => {
          this.setThematicMap();
         }, 200);
        }, 200);
        break;
      case "l4":
@@ -538,7 +608,7 @@
  //在线制图
  setThematicMap() {
    earthCtrl.coreMap.scene.mode = SmartEarth.Cesium.SceneMode.SCENE2D;
    // var handle = new SmartEarth.Cesium.ScreenSpaceEventHandler(
    //   earthCtrl.viewer.scene.canvas
@@ -632,9 +702,10 @@
  },
  //线漫游
  lineRoam() {
     // 绘制路线并获取路径动画数据
     earthCtrl.Command.execute(2, 3, "", (data) => {
    Viewer.scene.globe.depthTestAgainstTerrain = true;
    // 绘制路线并获取路径动画数据
    earthCtrl.Command.execute(2, 3, "", (data) => {
      data.showPoint = false;
      data.showLine = true;
      data.mode = 0;
@@ -650,12 +721,12 @@
        offset: "r",
        skin: "other-class",
        content: SmartEarthRootUrl + "Workers/path/Path.html",
        end: function() {
        end: function () {
          PathAnimationData.fly && PathAnimationData.fly.exit();
        },
      });
    });
  },
  //清除按钮
  clearALL(id) {
@@ -664,10 +735,19 @@
    // });
  },
  setCloseEsriLayer() {
    if (window.esriLayer) {
      Viewer.imageryLayers.remove(window.esriLayer);
      window.esriLayer = null
      this.legendBox = null;
      store.state.showlegendLayer = false;
    }
  },
  //清除方法
  clearTopTools(id) {
    store.state.doubleMap = false;
    store.state.doubleMenu = false;
    this.setCloseEsriLayer();
    if (earthCtrl.shadows) {
      Viewer.animation.container.style.visibility = "hidden";
      Viewer.timeline.container.style.visibility = "hidden";