我是否可以使用嵌套在Mapbox中“ case”内部的in表达式?

问题描述 投票:0回答:1

我正在尝试动态更改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表达式,但都无济于事。任何帮助将不胜感激,谢谢!

javascript mapbox mapbox-gl-js
1个回答
0
投票

对于可能遇到此问题的任何人,这都是版本问题。在Mapbox GL JS> 1.6.0之前,in运算符不存在;我使用的是早期版本。有关操作符版本控制的更多信息,请参见here

© www.soinside.com 2019 - 2024. All rights reserved.