Я использую mapbox gl js 0.46.0. Я воспользовался преимуществом API setFeatureState (> = 0.46.0), который имеет гораздо лучшую производительность для «зависания над функцией», например, для сценариев использования.
Я решил использовать один слой для объекта, имеющего два состояния: одно «нет», а другое «выбрано». К сожалению, из-за неадекватной документации и примеров я не могу полностью синхронизировать визуальные эффекты для этих двух состояний.
Например, если я хотел иметь свойство ширины линии с остановками на основе уровней масштабирования, как мне написать выражение такого типа для соответствующих состояний «выбранный» и «нет»?
"paint": {
"line-color": [
"match",[ "string", [ "feature-state", "line_color" ], "none" ],
"selected", "hsl(189, 87%, 37%)",
"none", "hsl(189, 87%, 37%)",
"hsl(189, 87%, 37%)"
],
"line-width": [
"match",[ "string", [ "feature-state", "line_width" ], "none" ],
"selected", 4,
"none", 3,
3
],
"line-opacity": [
"match",[ "string", [ "feature-state", "line_opacity" ], "none" ],
"selected", 0.68,
"none", 0.38,
0.38
]
}