yxl
2025-01-10 ed837798421340859efca21e46adc17575bdfef8
src/assets/js/mapSetFunc.js
@@ -19,6 +19,12 @@
      case "queryMeta":
        this.creatQueryMeta(res);
        break;
      case "aroundPoi_2":
        this.addWfsLayer(res);
        break;
      case "getParam":
        this.addTetrahedron(res);
        break;
    }
  },
  creatQueryMeta(res) {
@@ -37,7 +43,7 @@
    this.setModelChangeColor(colors);
  },
  setModelChangeColor(res) {
    console.log('mapServer.listData',mapServer.listData,config.modelLayer);
    console.log('mapServer.listData', mapServer.listData, config.modelLayer);
    const modelLayer = mapServer.listData.filter((obj) => {
      if (obj.name == config.modelLayer) {
        return obj;
@@ -156,7 +162,7 @@
  },
  creatPoiMap(res) {
    res.data.forEach((poi,index) => {
    res.data.forEach((poi, index) => {
      // const poi = res.data[0];
      console.log('poi------', poi)
      const label = earthCtrl.factory.createLabel({
@@ -236,7 +242,7 @@
        ids: element.list
      });
    })
    console.log('colors----',colors);
    console.log('colors----', colors);
    store.state.setListColor = colors;
    store.state.showLenged = true;
    this.setModelChangeColor(colors);
@@ -323,6 +329,160 @@
      }
    });
  },
  // 添加wfs
  addWfsLayer(res) {
    if (window.terrain) {
      window.terrain.removeFromMap();
      window.terrain = null;
    }
    // earthCtrl.viewer.scene.globe.show = false;
    earthCtrl.viewer.camera.flyTo({
      destination: {
        x: -3475710.5684351875,
        y: 5625834.799523204,
        z: 2729961.751894543,
      },
      orientation: {
        heading: 5.73978482494632,
        pitch: -1.2817819264676036,
        roll: 6.282989918773924,
      },
    });
    const layer1 = earthCtrl.factory.createWfsLayer('point', {
      urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows',
      layer: 'JiaShanBase:RadarSpot',
      text: '[JiaShanBase:Type]',
      color: '#de3',
      disableDepthTestDistance: Infinity
    })
    this.layerList.push({
      layer: layer1,
      func: res.func
    });
    const layer2 = earthCtrl.factory.createWfsLayer('polyline', {
      urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows',
      layer: 'JiaShanBase:RadarL',
      width: 1.5,
      color: '#87CEFA',
      disableDepthTestDistance: Number.POSITIVE_INFINITY,
    })
    this.layerList.push({
      layer: layer2,
      func: res.func
    });
    const layer3 = earthCtrl.factory.createWfsLayer('polyline', {
      urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows',
      layer: 'JiaShanBase:RadarM',
      width: 1.5,
      color: '#de3',
      disableDepthTestDistance: Number.POSITIVE_INFINITY,
    })
    this.layerList.push({
      layer: layer3,
      func: res.func
    });
    const layer4 = earthCtrl.factory.createWfsLayer('polyline', {
      urls: 'https://cim.smartearth.cn/geoserver/JiaShanBase/ows',
      layer: 'JiaShanBase:RadarS',
      width: 1.5,
      color: '#FF0000',
      disableDepthTestDistance: Number.POSITIVE_INFINITY,
    })
    this.layerList.push({
      layer: layer4,
      func: res.func
    });
    this.addRaderLayer(res);
  },
  addRaderLayer(res) {
    //雷达遮罩扫描(自定义)
    const option = {
      radius: 150000,  //半径
      yaw: 0,  //雷达方向(可选)
      angle: 120,  //雷达夹角(可选)
      scanAngle: 30,  //扫描夹角(可选)
      speed: 5,  //倍速(可选)
      maxLat: 90,  //下维度(可选)
      minLat: 45,  //上维度(可选)
      stackPartitions: 40,  //横向网格数(可选)
      slicePartitions: 80,  //纵向网格数(可选)
      //color: 'rgba(255,255,255,0.5)',  //雷达遮罩颜色(可选)
      //outlineColor: 'rgba(255,255,255,0.5)',  //雷达遮罩边框线颜色(可选)
      //scanColor: 'rgba(255,0,0,0.5)',   //扫描颜色(可选)
    };
    const position1 = [121.614202387521061, 23.990136825668284, 0];
    // 雷达遮罩
    const layer = earthCtrl.factory.createRadarMaskScan('雷达遮罩扫描1', position1, option)
    this.layerList.push({
      layer: layer,
      func: 'radarMaskScan'
    });
  },
  //视锥
  addTetrahedron(res) {
    res.data.forEach((item,index) => {
      const tetrahedron = earthCtrl.factory.addTetrahedron({
        position: {
          lon: item.lontitude,
          lat: item.lattitude,
          height: item.height
        },
        multiple: 0.05,
        scale: new SmartEarth.Cesium.Cartesian3(100, 100, 100),
        color: "#FF0000",
        outlineColor: "#FF0000"
      });
      if (index == 0) {
        earthCtrl.camera.flyTo(item.lontitude, item.lattitude, 5000, 0, -90, 0, 2);
        const modelLayer = mapServer.listData.filter((obj) => {
          if (obj.name == config.modelLayer) {
            return obj;
          }
        });
        // debugger
        if (modelLayer.length <= 0) return;
        // earthCtrl.userScene.flyTo(modelLayer[0].layer);
        // modelLayer[0].layer.style = new Cesium.Cesium3DTileStyle({
        //   color: {
        //     evaluateColor: (feature) => {
        //       const id = feature.getProperty("id");
        //       // if (id === 'de9b9f1f-bea5-11ef-bbd1-ac82473c08a6') {
        //       //   debugger
        //       //   // const boundingVolume = feature.tileset.root.boundingVolume
        //       //   // const center = Cesium.BoundingVolume.computeBoundingVolume(boundingVolume, feature.tileset.root.transform);
        //       //   // debugger
        //       //   earthCtrl.viewer.camera.flyTo({
        //       //     destination: center,
        //       //     duration: 2.0
        //       //   });
        //       //   // earthCtrl.userScene.flyTo(feature);
        //       //   // return new SmartEarth.Cesium.Color.fromCssColorString(
        //       //   //   '#FF0000'
        //       //   // );
        //       // }
        //       // console.log("id**********", id);
        //       // const color = res.filter((item) => {
        //       //   if (item.ids.indexOf(id) > -1) {
        //       //     return item;
        //       //   }
        //       // });
        //       // if (color.length > 0) {
        //         // return new SmartEarth.Cesium.Color.fromCssColorString(
        //         //   color[0].color
        //         // );
        //       // }
        //     }
        //   }
        // });
      }
      this.layerList.push({
        layer: tetrahedron,
        func: 'tetrahedron'
      });
    })
  },
  removeAll() {
    store.state.setListColor = [];
    store.state.showLenged = false;
@@ -360,6 +520,27 @@
        this.layerList.splice(i, 1);
        i--;
      }
      else if (obj.func == "aroundPoi_2") {
        this.layerList[i].layer.destroy();
        this.layerList.splice(i, 1);
        i--;
      }
      else if (obj.func == "radarMaskScan") {
        this.layerList[i].layer.deleteObject();
        this.layerList.splice(i, 1);
        i--;
      }
      else if (obj.func == "tetrahedron") {
        this.layerList[i].layer.deleteObject();
        this.layerList.splice(i, 1);
        i--;
      }
    }
    if (!window.terrain) {
      window.terrain = earthCtrl.factory.createTerrainLayer({
        sourceType: "ctb",
        url: config.terrainUrl
      });
    }
  }
};