Использование выражений Mapbox GL JS для установки смещения значков - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь установить смещение значка [5, -19] только для значка с именем marker_purple, причем все остальные значки имеют смещение [0, 0]. Мои попытки не приводят к отображению значков для данного слоя. Этот слой имеет только точечные типы геометрии и имеет много разных типов значков.

Что я пробовал:

"layout": {
  "icon-image": "{icon}",
  "icon-offset": [
    "case",
    ["==", ["get", "icon"], "marker_purple"],
    [5, -19],
    [0, 0]
  ]
}

Я также попробовал следующее в том случае, если выражения не могут возвращать массивы, но значки по-прежнему не отображаются.

"layout": {
   "icon-image": "{icon}",
   "icon-offset": [
      [
         "case",
         ["==", ["get", "icon"], "marker_purple"],
         5,
         0
      ],
      [
         "case",
         ["==", ["get", "icon"], "marker_purple"],
         -19,
         0
      ]
    ]  
 }

Если указать смещение без выражения, все будет отлично работать.

"icon-offset": [10,10] 

Все иконки сдвигаются на [10,10]

Я что-то упускаю, чтобы выражение работало правильно?

Я ценю, что вы нашли время, чтобы прочитать это и за любую помощь, которую вы можете оказать.

1 Ответ

1 голос
/ 15 апреля 2019
"layout": {
  "icon-image": "{icon}",
  "icon-offset": [
    "case",
    ["==", ["get", "icon"], "marker_purple"],
    ["literal", [5, -19]],
    ["literal", [0, 0]]
  ]
}

Оператор выражения "literal" необходим для значений массива.

...