有没有办法在Mapbox GL JS的属性函数中使用多个属性?在CartoCSS中,我会做类似以下的事情:
.states {
[name="California"] {
"polygon-fill": "blue"
},
[name_abbrev="WA"] {
"polygon-fill": "green"
}
}
在Mapbox GL JS中,似乎我可以根据属性fill-color
- 或 - name
设置name_abbrev
的样式,而不是两个属性的组合。例如:
'fill-color': {
'property': 'name',
'type': 'categorical',
'stops': [
['California', 'blue']
]
},
'fill-color': {
'property': 'name_abbrev',
'type': 'categorical',
'stops': [
['WA', 'green']
]
}
这导致第二个fill-color
覆盖第一个,加利福尼亚只是绿色。
答案 0 :(得分:1)
Mapbox GL不支持基于一个图层中的多个属性的样式。您可以重新设计数据,将基于您要设置样式的属性组合到一个图层中,或者您可以创建两个图层并使用过滤器来分隔要素,如果您的推理并非所有要素都具有某个图层/某些需要使用后备属性:类似
{
... layer metadata (id, source, source-layer, type, etc) ...
'filter': ['has', 'name'],
'paint': {
'fill-color': {
'property': 'name',
'type': 'categorical',
'stops': [
['California', 'blue']
]
}
}
},
{
... layer metadata (id, source, source-layer, type, etc) ...
'filter': ['!has', 'name'],
'paint': {
'fill-color': {
'property': 'name_abbrev',
'type': 'categorical',
'stops': [
['WA', 'green']
]
}
}
}