Как развернуть литеральный массив, полученный с помощью выражения get в Mapbox - PullRequest
0 голосов
/ 05 августа 2020

У меня есть набор значков изображений, связанных со странами, которые я использую в слое Mapbox для отображения меток богатых стран. Я следую этому примеру , который просто вставляет пробелы между значками.

Однако у меня есть 5 разных значков. Может появиться любой из них, и я хочу, чтобы интервалы всегда были одинаковыми. Поэтому я не хочу использовать подход «проверить, находится ли X в массиве», потому что я думаю, что мне придется проверять дважды: один раз для значка, а затем еще раз для пространства. В любом случае, это странный способ структурировать данные.

Я хочу вытащить заранее составленный набор изображений из переменной, например: ПОЧТИ работает! Почти:

Incorrect Senegal output

I've tried just pulling the first item out with 'at', and that half works:

halfway there

But it still isn't interpreting the object values. Thank you in advance!

EDIT

Thanks for the followup!

If every country had the same icons and I didn't need to do this dynamically, I could make 'text-field' look like this:

'text-field': [
    'format',
    ['get', 'name_x'],
    '\n',
    ['image', 'health'], ' ',
    ['image', 'food'], ' ',
    ['image', 'fiscal'], ' ',
    ['image', 'management'], ' ',
    ['image', 'supply_chain']
],

Вот что получается в случае Сенегала. Обратите внимание на пробелы:

Senegal with icons and spaces

I have succeeded in getting dynamic generation working without spaces using the "country codes in workstream arrays" approach, which looks like this:

var managementWS    = ['GMB', 'GIN'];
var healthWS        = ['SEN', 'GMB'];
var supply_chainWS  = ['SEN', 'GIN'];
var fiscalWS        = ['SEN', 'MOZ'];
var foodWS          = ['GMB', 'GIN'];
// ...

'text-field': [
    'format',
    ['get', 'name_x'],
    '\n',
    ['case', ['in', ['get', 'iso_alpha3'], ['literal', managementWS]], ['image', 'management'], ''],
    ['case', ['in', ['get', 'iso_alpha3'], ['literal', healthWS]], ['image', 'health'], ''],
    ['case', ['in', ['get', 'iso_alpha3'], ['literal', supply_chainWS]], ['image', 'supply_chain'], ''],
    ['case', ['in', ['get', 'iso_alpha3'], ['literal', fiscalWS]], ['image', 'fiscal'], ''],
    ['case', ['in', ['get', 'iso_alpha3'], ['literal', foodWS]], ['image', 'food'], '']
],

Результат:

Сенегал правильные значки без пробелов

Но я бы предпочел пробелы между иконками. (Если бы это можно было сделать с помощью CSS, это было бы здорово! Думаю, я мог бы добавить их в SVG 10x10, сделать их 13x10 или что-то в этом роде. Но это выглядит действительно хакерским.)

...