如文档所述,在样式规范表达式中,
to-number
表达式将 null
值转换为 0
作为预期行为。对于我的用例,null
和 0
意味着不同的东西,因为 0
是一个有效值。
这是我希望如何设置数据样式的示例:
'paint': {
'circle-color': [
'case',
['all', [">=", ["to-number", ["get", "value"]], 0], ["<", ["to-number", ["get", "value"]], 100]], '#fff',
['all', [">=", ["to-number", ["get", "value"]], 100], ["<", ["to-number", ["get", "value"]], 500]], '#000',
"#2f2f2f"
]
},
0-100 是白色,100-500 是黑色,其他任何东西(包括
null
)都是#2f2f2f
.
我怎样才能使
case
语句捕捉到 null
值?我已经尝试使用 ==
运算符来表示 null
,以及使用 to-string == ''
。两者都不适合我,或者他们的行为影响了其他有效值。
我正在使用
pg_tileserv
实例来提供我的数据,如果这有所不同的话。
我没有测试过这个,但这会使非数字值变红:
["case", ["typeof", ["get", "value"]], "number", [ /* insert handling of number here */ ], "red"]
如果您的非空值是字符串而不是数字,请更改为
"string"
。