我正在尝试动态更改Mapbox地图上某些点的icon-size
,并且出现了我似乎无法解决的问题。图标大小应根据给定数据点的“键”是否在所选键列表中而变化。这是我到目前为止的代码:
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", [...]]."
我对此感到很困惑,因为我认为我可以在in
表达式内使用case
表达式。我试过向数组添加literal
表达式,以及to-string
表达式周围的get
表达式,但都无济于事。任何帮助将不胜感激,谢谢!
对于可能遇到此问题的任何人,这都是版本问题。在Mapbox GL JS> 1.6.0之前,in
运算符不存在;我使用的是早期版本。有关操作符版本控制的更多信息,请参见here。