我无法使用Mapbox样式表达式。 我有一个非常简单的“二进制”绘制模式:
'paint': {
'circle-radius': 16,
'circle-color': [
'case',
['boolean', ['feature-state', 'selected'], false],
'#adff2f', // colors.green
'#999999', // colors.none
],
},
现在我需要使其更复杂,等效于此伪代码:
if(featureState.selected){
switch(featureState.status){
case 'high': colors.high
case 'low': colors.low
default: colors.normal
}
} else {
colors.none
}
当我开始嵌套这些条件时,绘画将停止工作,因此我的语法可能是错误的。像这样:
'paint': {
'circle-radius': 16,
'circle-color': [
'case',
['boolean', ['feature-state', 'selected'], false],
['match',
['get', 'status'],
'high', '#ffa500', // colors.high
'low', '#ba0000', // colors.low
'#1d8aaf', // colors.normal
],
'#999999', // colors.none
],
},
==== 编辑 ====
与此同时,我的数据已更改,这是更新的伪代码:
if(featureState.selected){
switch(featureState.status){
less than 2: colors.normal
else: colors.high
}
} else {
colors.none
}
以及我尝试使用的真实代码(现在改为使用step
)
'circle-color': [
'case',
['boolean', ['feature-state', 'selected'], false],
['step',
['get', 'load'],
'#1d8aaf', 2 // colors.normal
'#ffa500', // colors.high
],
'#999999', // colors.none
],
这可行。