Newer
Older
KaiFengPC / src / views / sponeScreen / gisMF / newfiberVectorLayer.js
@jimengfei jimengfei 8 days ago 8 KB updata
export default class newfiberVectorLayer {
  //添加图标标注点
  static addGeojsonPoint(newfiberMap, geojson, icon_url, newfiberId) {
    geojson.features.forEach(
      feature =>
        (feature.properties = Object.assign(feature.properties, {
          style_: {
            type: NewFiberMap.Enum.VectorType.ICON,
            options: {
              show: true,
              url: icon_url,
              width: 30,
              height: 30,
              pixelOffset: [0, 0],
              distanceDisplayCondition: [Number.MIN_VALUE, 7000000],
            },
            name: feature.properties.name || feature.properties.pumpName || feature.properties.projectAbbreviation,
            id: newfiberId,
            labelOptions: {
              font: '16px PingFang SC',
              color: 'rgba(197, 234, 255, 1)',
              pixelOffset: [0, 0],
              backgroundColor: 'rgba(0,0,0,1)',
              showBackground: false,
              outlineColor: 'rgba(255, 255, 255, 1)',
              outlineWidth: 2,
              style: Cesium.LabelStyle.FILL_AND_OUTLINE,
              distanceDisplayCondition: [Number.MIN_VALUE, 7000],
            },
          },
        }))
    );
    if (newfiberMap.getLayers(newfiberId).length > 0) {
      return;
    } else {
      newfiberMap.geojsonToMap(geojson);
    }
  }
  //添加geojson面
  static addGeojsonPolygon(newfiberMap, geojson, newfiberId) {
    geojson.features.forEach(
      feature =>
        (feature.properties = Object.assign(feature.properties, {
          style_: {
            type: NewFiberMap.Enum.VectorType.POLYGON,
            options: {
              show: true,
              material: !!feature.properties.fillcolor ? feature.properties.fillcolor : 'rgba(154,104,171,0.4)',
              outline: false,
              // outlineColorBottom: !!feature.properties.outcolor ? feature.properties.outcolor : 'rgba(189,127,171,0.75)',
              // outlineWidthBottom: 2,
            },
            name: feature.properties.name != ' ' ? feature.properties.name : null,
            id: newfiberId,
            labelOptions: {
              font: '20px PingFang SC',
              color: 'rgba(16, 117, 224, 1)',
              pixelOffset: [0, 0],
              backgroundColor: 'rgba(0,0,0,1)',
              showBackground: false,
              outlineColor: 'rgba(255, 255, 255, 1)',
              outlineWidth: 5,
              style: Cesium.LabelStyle.FILL_AND_OUTLINE,
              distanceDisplayCondition: [Number.MIN_VALUE, 7000000],
            },
          },
        }))
    );
    if (newfiberMap.getLayers(newfiberId).length > 0) {
      return;
    } else {
      newfiberMap.geojsonToMap(geojson);
    }
  }
  //添加发光线
  static addLightenLine(geojson, newfiberId) {
    let width = 10;
    geojson.features.forEach(
      feature =>
        (feature.properties = Object.assign(feature.properties, {
          style_: {
            name: !!feature.properties.dikeName ? feature.properties.dikeName : '',
            type: NewFiberMap.Enum.VectorType.POLYLINE,
            options: {
              material: new Cesium.PolylineGlowMaterialProperty({
                glowPower: 0.3, //一个数字属性,指定发光强度,占总线宽的百分比。
                color: new Cesium.Color.fromCssColorString('rgba(163, 100, 214,1)'),
              }),
              width: 20,
              // width: new Cesium.CallbackProperty(() => {
              //   width += 0.3;
              //   if (width > 20) {
              //     width = 5;
              //   }
              //   return width;
              // }, false),
              show: true,
            },
            id: newfiberId,
            // labelOptions: {
            //   font: '15px PingFang SC',
            //   color: 'rgba(225, 242, 255,1)',
            //   pixelOffset: [0, -30],
            //   backgroundColor: 'rgba(0,0,0,0.7)',
            //   showBackground: false,
            //   distanceDisplayCondition: [Number.MIN_VALUE, 7000000],
            // },
          },
        }))
    );
    if (newfiberMap.getLayers(newfiberId).length > 0) {
      return;
    } else {
      newfiberMap.geojsonToMap(geojson);
    }
  }
  //添加geojson立体墙
  static addGeojsonWall(newfiberMap, geojson, newfiberId) {
    geojson.features.forEach(feature => {
      feature.properties = Object.assign(feature.properties, {
        style_: {
          type: NewFiberMap.Enum.VectorType.WALL,
          id: newfiberId,
          options: {
            maximumHeights: 500,
            minimunHeights: 0,
            material: new NewFiberMap.Material.WallTrailMaterialProperty({
              color: new Cesium.Color.fromCssColorString(feature.properties.fillcolor) || Cesium.Color.RED,
              speed: 1000,
            }),
          },
        },
      });
    });
    newfiberMap.geojsonToMap(geojson);
  }
  //添加geojson立体墙2
  static addGeojsonWall2(geojson, newfiberId) {
    geojson.features.forEach(feature => {
      feature.properties = Object.assign(feature.properties, {
        style_: {
          type: NewFiberMap.Enum.VectorType.WALL,
          id: newfiberId,
          options: {
            maximumHeights: 100,
            minimunHeights: 0,
            material: new NewFiberMap.Material.WallDiffuseMaterialProperty({
              image: NewFiberMapConfig.SDK_INIT_SRC_PREFIX + '/static/images/material/wall/colors_blue_v1.png',
              duration: 1000,
            }),
          },
        },
      });
    });
    newfiberMap.geojsonToMap(geojson);
  }
  //添加发光圈
  static addLightenClrcle(geojson, newfiberId) {
    geojson.features.forEach(feature => {
      feature.properties = Object.assign(feature.properties, {
        style_: {
          type: NewFiberMap.Enum.VectorType.SPECIAL_CIRCLE,
          id: newfiberId,
          options: {
            radius: 500,
            clampToGround: false,
            material: new NewFiberMap.Material.CircleDiffuseMaterialProperty({
              color: Cesium.Color.fromCssColorString('rgba(92, 223, 99,.5)'),
              speed: 30,
            }),
          },
        },
      });
    });
    newfiberMap.geojsonToMap(geojson);
  }
  //添加流动线
  static addDynamicLine(geojson, newfiberId) {
    geojson.features.forEach(feature => {
      feature.properties = Object.assign(feature.properties, {
        style_: {
          type: NewFiberMap.Enum.VectorType.POLYLINE,
          id: newfiberId,
          options: {
            width: 3,
            clampToGround: false,
            material: new NewFiberMap.Material.PolylineTrailMaterialProperty({
              speed: 30,
              color:
                feature.properties.type == 'ys'
                  ? Cesium.Color.fromCssColorString('rgba(81,157,255,.8)')
                  : feature.properties.type == 'Ws'
                  ? Cesium.Color.fromCssColorString('rgba(255,97,97,.8)')
                  : Cesium.Color.fromCssColorString('rgba(251,171,84,.8)'),
            }),
          },
        },
      });
    });
    newfiberMap.geojsonToMap(geojson);
  }
  //添加动态河流
  static addDynamicWater(newfiberMap, geojson, newfiberId) {
    NewFiberMap.Layer.Primitive.loadWaterPrimitive({ geojson: geojson, height: 10, id: newfiberId, show: true }, newfiberMap.getMap());
  }
  //动态河流显示与隐藏
  static setDynamicWaterVisible(visible) {
    let dynamicWaterList = newfiberMap.getMap().scene.primitives._primitives.filter(i => i.key == 'dynamicWater');
    dynamicWaterList.map(feature => {
      feature.show = visible;
    });
  }
  //添加三维模型
  static add3DModelLayers(newfiberMap, url, newfiberId) {
    let modelList = newfiberMap.getMap().scene.primitives._primitives.filter(i => i.newfiberId == newfiberId);
    if (!modelList.length) {
      let models = new SuperMap3D.S3MTilesLayer({
        context: newfiberMap.getMap().scene.context,
        url: url,
      });
      models.newfiberId = newfiberId;
      newfiberMap.getMap().scene.primitives.add(models);
    } else {
      newfiberVectorLayer.set3DModelVisible(newfiberId, true);
    }
  }
  //隐藏三维模型
  static set3DModelVisible(newfiberId, visible) {
    let models = newfiberMap.getMap().scene.primitives._primitives.filter(i => i.newfiberId == newfiberId);
    models.map(feature => {
      feature.show = visible;
    });
  }
}