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,16 +43,19 @@
    this.setModelChangeColor(colors);
  },
  setModelChangeColor(res) {
    const modelLayer = mapServer.listData.filter((res) => {
      if (res.name == config.modelLayer) {
        return res;
    console.log('mapServer.listData', mapServer.listData, config.modelLayer);
    const modelLayer = mapServer.listData.filter((obj) => {
      if (obj.name == config.modelLayer) {
        return obj;
      }
    });
    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");
          console.log("id**********", id);
          const color = res.filter((item) => {
            if (item.ids.indexOf(id) > -1) {
              return item;
@@ -153,37 +162,31 @@
  },
  creatPoiMap(res) {
    const poi = res.data;
    // const label = earthCtrl.factory.createLabel({
    //   lon: poi._x,
    //   lat: poi._y,
    //   text: this.getName(poi),
    //   alt: 150,
    //   image: SmartEarthRootUrl + "Workers/image/fighter.png",
    //   // 文本偏移量
    //   pixelOffset: new SmartEarth.Cesium.Cartesian2(0, -50),
    //   // 图片偏移量
    //   iPixelOffset: new SmartEarth.Cesium.Cartesian2(0, -20)
    // });
    const label = earthCtrl.factory.createLabel({
      name: "创建文本",
      id: earthCtrl.factory.createUUID(),
      text: this.getName(poi),
      font: "22pt monospace",
      outlineWidth: 2,
      fillColor: SmartEarth.Cesium.Color.YELLOW,
      lon: poi._x,
      lat: poi._y,
      alt: poi.height ? poi.height + 10 : 100,
      iDistanceDisplayCondition: (100, 3000)
    });
    setTimeout(() => {
      this.setEntityTitlesChangeColor(poi.seid);
    }, 200);
    earthCtrl.userScene.flyTo(label);
    this.layerList.push({
      layer: label,
      func: res.func
    res.data.forEach((poi, index) => {
      // const poi = res.data[0];
      console.log('poi------', poi)
      const label = earthCtrl.factory.createLabel({
        name: "创建文本",
        id: earthCtrl.factory.createUUID(),
        text: poi.name,//this.getName(poi),
        font: "22pt monospace",
        outlineWidth: 2,
        fillColor: SmartEarth.Cesium.Color.YELLOW,
        lon: poi.lontitude,
        lat: poi.lattitude,
        alt: poi.height ? poi.height + 10 : 100,
        iDistanceDisplayCondition: (100, 3000)
      });
      setTimeout(() => {
        this.setEntityTitlesChangeColor(poi.seid);
      }, 200);
      if (index == 0) {
        earthCtrl.userScene.flyTo(label);
      }
      this.layerList.push({
        layer: label,
        func: res.func
      });
    });
  },
  setEntityTitlesChangeColor(res) {
@@ -231,6 +234,20 @@
    return name;
  },
  creatAroundPoi(res) {
    let colors = [];
    res.data.forEach((element) => {
      colors.push({
        name: element.type,
        color: element.color,
        ids: element.list
      });
    })
    console.log('colors----', colors);
    store.state.setListColor = colors;
    store.state.showLenged = true;
    this.setModelChangeColor(colors);
  },
  creatAroundPoi1111(res) {
    const poi = res.data;
    var std = [];
    var feature = {
@@ -312,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;
@@ -349,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
      });
    }
  }
};