我可以在 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