我可以在 Mapbox 中使用嵌套在 "case" 中的 "in" 表达式吗?
Can I use an "in" expression nested inside "case" in Mapbox?
我正在尝试动态更改我的 Mapbox 地图上某些点的 icon-size
,运行我遇到了一个我似乎无法解决的问题。图标大小应根据给定数据点的 "key" 是否在所选键列表中而改变。这是我到目前为止的代码:
mapRef
.getMap() // Using a React reference, getting the map itself
.setLayoutProperty(layer, "icon-size", [
"case",
[
"in",
["get", key],
selectedData // Mapping an immutable list to the keys
.toArray()
.map(data => data[key as keyof CommonData])
],
1.5,
1
]
);
这似乎应该做我想做的事,但是当我尝试 运行 它时,我得到了
Error: "layers.stl-crimes.layout.icon-size[1][0]: Unknown expression "in". If you wanted a literal array, use ["literal", [...]]."
我对此感到很困惑,因为我认为我可以在 case
表达式中使用 in
表达式。我试过向数组添加一个 literal
表达式,并在 get
表达式周围添加一个 to-string
表达式,但都无济于事。任何帮助将不胜感激,谢谢!
对于可能遇到此问题的任何人来说,这是一个版本控制问题。 in
运算符直到 Mapbox GL JS >1.6.0 才存在;我使用的是早期版本。有关运算符版本控制的更多信息,请参见 here。
我正在尝试动态更改我的 Mapbox 地图上某些点的 icon-size
,运行我遇到了一个我似乎无法解决的问题。图标大小应根据给定数据点的 "key" 是否在所选键列表中而改变。这是我到目前为止的代码:
mapRef
.getMap() // Using a React reference, getting the map itself
.setLayoutProperty(layer, "icon-size", [
"case",
[
"in",
["get", key],
selectedData // Mapping an immutable list to the keys
.toArray()
.map(data => data[key as keyof CommonData])
],
1.5,
1
]
);
这似乎应该做我想做的事,但是当我尝试 运行 它时,我得到了
Error: "layers.stl-crimes.layout.icon-size[1][0]: Unknown expression "in". If you wanted a literal array, use ["literal", [...]]."
我对此感到很困惑,因为我认为我可以在 case
表达式中使用 in
表达式。我试过向数组添加一个 literal
表达式,并在 get
表达式周围添加一个 to-string
表达式,但都无济于事。任何帮助将不胜感激,谢谢!
对于可能遇到此问题的任何人来说,这是一个版本控制问题。 in
运算符直到 Mapbox GL JS >1.6.0 才存在;我使用的是早期版本。有关运算符版本控制的更多信息,请参见 here。