Shr*_*van 6 mapbox mapbox-gl mapbox-gl-js mapbox-gl-draw
我正在读取GeoJSON 文件并将多边形(和其他东西)导入 mapbox-gl draw 使用draw.set(geoJSON). 如何通过要素属性中的属性为单个多边形着色。例子:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
//"id": "the most unique id in the world",
"properties": {
"class_id": 1
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
79.30961608886719,
61.57192958204744
],
[
79.34309005737303,
61.57192958204744
],
[
79.34309005737303,
61.57871162332267
],
[
79.30961608886719,
61.57871162332267
],
[
79.30961608886719,
61.57192958204744
]
]
]
}
},
{
"type": "Feature",
"properties": {
"class_id": 2
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
79.35201644897461,
61.58271478278019
],
[
79.35115814208984,
61.573972521656835
],
[
79.38188552856444,
61.57192958204744
],
[
79.35201644897461,
61.58271478278019
]
]
]
}
},
}
Run Code Online (Sandbox Code Playgroud)
这个想法是我们将class_id= 1的特征着色为红色,class_id= 2 为蓝色,class_id= 3 为绿色。我们怎么做?
您需要将userProperties的属性设置为 true a feature will be available for styling。并使用前缀user。
并使用case expression:
var Draw = new MapboxDraw({
userProperties: true,
styles: [{
'id': 'gl-draw-polygon-fill-inactive',
'type': 'fill',
'filter': ['all', ['==', 'active', 'false'],
['==', '$type', 'Polygon'],
['!=', 'mode', 'static']
],
'paint': {
'fill-color': [
"case",
['==', ['get', "user_class_id"], 1], "#00ff00",
['==', ['get', "user_class_id"], 2], "#0000ff",
'#ff0000'
],
'fill-outline-color': '#3bb2d0',
'fill-opacity': 0.5
}
}...
Run Code Online (Sandbox Code Playgroud)
[ http://jsfiddle.net/5Lotf4ka/ ]
| 归档时间: |
|
| 查看次数: |
4407 次 |
| 最近记录: |