mapbox gl数据驱动样式(choropleth maps)

时间:2018-01-23 14:15:36

标签: mapbox-gl-js

我正在尝试使用mapbox-gl创建一个等值区域地图。在示例等值区域图中,它们看起来像是根据要素的属性设置要素的绘制填充颜色。有没有办法通过访问地图来设置颜色?

即。我在每个名为id的要素属性中都使用唯一ID。我还有一个json,它使用一个值映射每个id,并希望访问这些值来设置颜色。

这可能吗?或者我是否仅限于能够访问要素属性中的值?

2 个答案:

答案 0 :(得分:4)

我不完全确定我是否正确理解了你的问题。但我认为你想要实现的目标可以通过expressions完成:

n

请参阅const geojson = { type: 'FeatureCollection', features: [ { type: 'Feature', properties: { id: 'foo' }, geometry: { /* */ } } ] }; const values = { foo: 'green', bar: 'red', baz: 'blue' }; map.addLayer({ // ... paint: { 'fill-color': [ [ 'get', // get the id property and use it as a key into "values" ['get', 'id'], values ] ] } }); 表达式:https://www.mapbox.com/mapbox-gl-js/style-spec#expressions-get

答案 1 :(得分:2)

从04.2018更新: 从某种程度上构建像

 [
    'get',
    // get the id property and use it as a key into "values"
    ['get', 'id'],
    values
  ]

停止工作。发生以下异常:'裸对象无效。使用[“literal”,{...}]'。现在有必要使用类型表达式,如下所示:

[
 'get',
 ['string', ['get', 'id'],
 ['literal', values]
]

请参阅thisthis以供参考。