Есть несколько способов, которыми вы могли бы достичь этого. Один из подходов заключается в добавлении каждого объекта в качестве отдельного слоя, чтобы при изменении непрозрачности значка, добавленного в слой 'specific-icon-layer'
, можно было передать 'specific-icon-layer'
методу Map#on
. Это, вероятно, самый простой вариант, если у вас относительно небольшое количество маркеров.
Другой подход заключается в добавлении уникальных идентификаторов для каждой функции значков, чтобы вы могли использовать выражение filter
в сочетании с * 1007. *Map#setPaintProperty
и Map#queryRenderedFeatures
(или Map#querySourceFeatures
). Например, предположим, что вы добавляете свойство 'id'
к каждому объекту Geo JSON, представляющему значок в источнике для слоя 'Icons'
. Затем вы можете настроить прослушиватель событий, подобный в этом примере , получить 'id'
возвращенного объекта и использовать 'id'
(предположим, здесь 'example-id'
), чтобы обновить свойство рисования для слоя 'Icons'
:
map.setPaintProperty(
'Icons',
'icon-opacity',
['match', ['get', 'id'], 'example-id', 0.5 , 1]
);
Здесь мы используем выражения match
и get
, чтобы сказать "если 'id'
из 'example-id'
, закрасьте его значок с непрозрачностью 0.5
, в противном случае используйте непрозрачность 1
. "