Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
583 views
in Technique[技术] by (71.8m points)

maps - mapbox : fill-color expression depending of a value (not a color value) from the geojson

how could I set the color of a shape depending of the value of one of its property in the geoJson ?

let's say I have this features collection :

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "district_type": "foo"
      },
      "geometry": {
        "coordinates": [...],
        "type": "Polygon"
      }
    },
    {
      "type": "Feature",
      "properties": {
        "district_type": "bar"
      },
      "geometry": {
        "coordinates": [...],
        "type": "Polygon"
      }
    }
  ]
}

And this array to match colors :

    var colors = {
      foo:'#111111',
      bar:'#222222',
    }

Now, I want to add a layer where the shapes have the color from my colors var, matching the distric_type property of the features.

map.addLayer({
  'id': 'districts-fill',
  'type': 'fill',
  'source': 'geo-districts',
  'paint': {
    'fill-color': ..., //which expression here ?
    'fill-opacity': 0.4
  }
});

Thanks !

question from:https://stackoverflow.com/questions/65915906/mapbox-fill-color-expression-depending-of-a-value-not-a-color-value-from-the

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I found out... That's so nice !

map.addLayer({
  'id': 'districts-fill',
  'type': 'fill',
  'source': 'geo-districts',
  'paint': {
    'fill-color': [
      'match', ['get', 'district_type'],
      'foo', '#111111',
      'bar', '#222222',
      'white'// otherwise
   ],
   'fill-opacity': 0.4
  },

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...