Могу ли я использовать выражение «in», вложенное в «case» в Mapbox? - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь динамически изменить icon-size некоторых точек на карте Mapbox, и у меня возникла проблема, которую я не могу исправить. Размер значка должен меняться в зависимости от того, находится ли «ключ» для данной точки данных в списке выбранных ключей. Вот код, который у меня есть до сих пор:

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, но все безрезультатно. Любая помощь будет принята с благодарностью, спасибо!

1 Ответ

0 голосов
/ 24 февраля 2020

Для тех, кто может столкнуться с этим, это была проблема с версиями. Оператор in не существует, пока Mapbox GL JS> 1.6.0; Я был на более ранней версии. Более подробную информацию о версиях операторов можно найти здесь .

...