Mapbox样式配置之过滤器表达式

发布时间 2023-06-02 16:42:43作者: 槑孒

需求
如一个图层,有个属性字段m,值可能有1,2,3,我想等于1和2的时候给红色,等于3的时候给黄色。

解决办法
在 Mapbox 中,你可以使用样式表(Style)来配置图层的样式,包括根据属性字段值来设置不同的颜色。

以下是一个示例,演示如何根据属性字段 m 的值设置图层的颜色:

{
  "version": 8,
  "sources": {
    "my-data-source": {
      "type": "vector",
      "url": "your-data-source-url"
    }
  },
  "layers": [
    {
      "id": "my-layer",
      "type": "circle",
      "source": "my-data-source",
      "paint": {
        "circle-color": [
          "match",
          ["get", "m"],
          [1,2], "red",
          "yellow"
        ],
        "circle-radius": 6
      }
    }
  ]
}

如果想根据属性字段 m 的值设置图标,可以使用 Mapbox 的符号图层(Symbol Layer)和图标样式来实现。

{
  "version": 8,
  "sources": {
    "my-data-source": {
      "type": "vector",
      "url": "your-data-source-url"
    }
  },
  "layers": [
    {
      "id": "my-layer",
      "type": "symbol",
      "source": "my-data-source",
      "layout": {
        "icon-image": [
          "match",
          ["get", "m"],
          ["1", "2"], "your-red-icon",
          ["3"], "your-yellow-icon",
          "your-default-icon"
        ],
        "icon-size": 1
      }
    }
  ]
}