You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MapboxGL中使用离散颜色填充地图而非默认插值颜色?

MapboxGL 实现分级统计图的离散颜色填充

可以实现离散(非插值)的颜色填充,核心是用 MapboxGL 的 step 表达式替代默认的插值逻辑,step 专门用于处理离散区间的样式映射。

修改后的代码示例

map.on('load', function () {
      map.addSource('bb', { type: 'geojson', data: data, generateId: true});
      map.addLayer({
        'id': 'berlin',
        'type': 'fill',
        'source': 'bb',
        'paint': {
          'fill-color': [
            'step',
            ['get', 'some_numeric_val'], // 获取目标数值属性
            '#feebe2', // 数值 ≤4 时使用
            4, '#fbb4b9', // 数值 >4 且 ≤8 时使用
            8, '#f768a1', // 数值 >8 且 ≤12 时使用
            12, '#c51b8a', // 数值 >12 且 ≤16 时使用
            16, '#7a0177' // 数值 >16 时使用
          ],
          'fill-opacity': .65
        }
      });
      map.addLayer({
        'id': 'berlin-stroke',
        'type': 'line',
        'source': 'bb',
        'paint': {
          'line-color': '#000',
          'line-width': [
            'case',
            ['boolean', ['feature-state', 'hover'], false],
            2,
            .5
          ]
        }
      });
    });

逻辑说明

step 表达式的工作规则是:

  • 第一个参数是要判断的属性值(通过 ['get', '属性名'] 获取)
  • 第二个参数是对应数值小于第一个断点的默认颜色
  • 后续参数成对出现:[断点值, 对应颜色],表示数值大于等于当前断点、且小于下一个断点时,使用该颜色
  • 最后一对的颜色会应用于所有大于等于最后一个断点的数值

这样配置后,地理单元的数值会严格匹配你定义的5个离散区间,不会生成插值渐变色彩。

内容的提问来源于stack exchange,提问作者DiamondJoe12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:47:14