openlayer根据不同的状态显示不同的图层颜色

根据不同的状态governanceType显示不同的颜色

数据格式

首先清楚别的图层

this.removeLayer();

javascript 复制代码
 // 创建一个映射,将governanceType映射到颜色
  const colorMapping1 = {
    '18': 'rgba(126, 97, 18, 0.5)',  // 假设治理类型1对应颜色选项0
    '19': 'rgba(160, 133, 254, 0.5)',  // 假设治理类型2对应颜色选项1
    '15': 'rgba(55, 43, 65, 0.5)',  // 假设治理类型3对应颜色选项2
    '20': 'rgba(178, 111, 173, 0.5)',  // 假设治理类型3对应颜色选项2
    '1': 'rgba(150, 209, 16, 0.5)',  // 假设治理类型4对应颜色选项3
    '3': 'rgba(49, 77, 92, 0.5)',  // 假设治理类型5对应颜色选项4
    '14': 'rgba(248, 49, 176, 0.5)',  // 假设治理类型6对应颜色选项5
    '16': 'rgba(141, 13, 63, 0.5)',  // 假设治理类型7对应颜色选项6
    '17': 'rgba(6, 206, 10, 0.5)',  // 假设治理类型7对应颜色选项6
    '2': 'rgba(37, 189, 131, 0.5)',  // 假设治理类型7对应颜色选项6
    // 其他治理类型映射
  };
  const colorMapping = {
    '18': 'rgba(126, 97, 18, 1)',  // 假设治理类型1对应颜色选项0
    '19': 'rgba(160, 133, 254, 1)',  // 假设治理类型2对应颜色选项1
    '15': 'rgba(55, 43, 65, 1)',  // 假设治理类型3对应颜色选项2
    '20': 'rgba(178, 111, 173, 1)',  // 假设治理类型3对应颜色选项2
    '1': 'rgba(150, 209, 16, 1)',  // 假设治理类型4对应颜色选项3
    '3': 'rgba(49, 77, 92, 1)',  // 假设治理类型5对应颜色选项4
    '14': 'rgba(248, 49, 176, 1)',  // 假设治理类型6对应颜色选项5
    '16': 'rgba(141, 13, 63, 1)',  // 假设治理类型7对应颜色选项6
    '17': 'rgba(6, 206, 10, 1)',  // 假设治理类型7对应颜色选项6
    '2': 'rgba(37, 189, 131, 1)',  // 假设治理类型7对应颜色选项6
    // 其他治理类型映射
  };

  // 已通过图层
  this.vectorLayer = new VectorLayer({
    source: new VectorSource({
      features: [], // 初始化features数组
    }),
    style: (feature) => {
      const governanceType = feature.get('governanceType'); //通过get方法获取feature里面governanceTyped属性值
      console.log(governanceType,'governanceType')
      return new Style({
        fill: new Fill({
          color: colorMapping1[governanceType] || this.drawColorOptions[2].fill, // 默认颜色
        }),
        stroke: new Stroke({
          color: colorMapping[governanceType],
          //  color: this.drawColorOptions[2].stroke,
          width: 2,
        }),
      });
    },
    visible: true,
    zIndex: 999,
  });
  let data = {
    type: "FeatureCollection",
    features: list
      .filter((item) => item.operationState === 1)
      .map((item) => {
        return {
          type: "Feature",
          geometry: item.pondGeomJson,
          properties: {
            governanceType: item.governanceType, // 确保governanceType在properties中
          },
        };
      }),
  };
  console.log(data,'data')
  let features = new GeoJSON().readFeatures(data);
  this.vectorLayer.getSource().addFeatures(features);
  this.map.addLayer(this.vectorLayer);
相关推荐
拉不动的猪30 分钟前
移动端调试工具VConsole初始化时的加载阻塞问题
前端·javascript·微信小程序
NE_STOP1 小时前
MyBatis-配置文件解读及MyBatis为何不用编写Mapper接口的实现类
java
大金乄3 小时前
封装一个vue2的elementUI 表格组件(包含表格编辑以及多级表头)
前端·javascript
雨白5 小时前
Android 快捷方式实战指南:静态、动态与固定快捷方式详解
android
hqk5 小时前
鸿蒙项目实战:手把手带你实现 WanAndroid 布局与交互
android·前端·harmonyos
Lee川5 小时前
解锁 JavaScript 的灵魂:深入浅出原型与原型链
javascript·面试
LING5 小时前
RN容器启动优化实践
android·react native
swipe6 小时前
从原理到手写:彻底吃透 call / apply / bind 与 arguments 的底层逻辑
前端·javascript·面试
后端AI实验室6 小时前
用AI写代码,我差点把漏洞发上线:血泪总结的10个教训
java·ai
程序员清风8 小时前
小红书二面:Spring Boot的单例模式是如何实现的?
java·后端·面试