#mapbox #mapbox-gl-js #mapbox-marker
#mapbox #mapbox-gl-js #mapbox-marker
Вопрос:
AFAIK, при нанесении маркеров на карту mapbox (Mapbox GL JS) у вас есть два варианта:
(a) отображать их в виде стилей точек и слоев (в этом случае они отображаются в конечном <canvas>
элементе, их невозможно проверить, они не могут получать: состояния наведения
(b) добавить их в качестве маркеров, которые затем остаются индивидуально проверяемыми элементами HTML. Недостатком этого метода является то, что они не масштабируются так плавно и быстро, как карта, поэтому заметна небольшая инерция.
Оба метода поддерживают взаимодействие (если вы указываете interactive: true
в (a) опции), хотя вы обрабатываете его по-разному.
Существуют ли какие-либо другие ограничения любого из этих методов, которые я должен учитывать при создании интерактивной карты?
Ответ №1:
Это довольно широкий вопрос. Но в целом я вижу преимущества каждого метода как:
- Слои: часть карты, поэтому вы получаете обнаружение столкновений, стиль, управляемый данными, стиль, управляемый масштабированием, и т.д.
- Маркеры: часть DOM, поэтому вы получаете CSS, события Javascript, легкую интеграцию изображений и шрифтов и более простую обработку событий мыши, например
:hover
.
Не совсем верно сказать, что слои не поддерживаются :hover
. Вы можете определить, mouseOver
затем сделать map.setFeatureState()
, чтобы установить свойство наведения на объект. Просто вы не получаете это бесплатно.
Комментарии:
1. Правильно. Сегодня я использовал этот метод setFeatureState. Отлично работает. Переходы CSS недоступны только в том случае, если вы хотите подчеркнуть выбор маркера с эффектом короткого свечения, например. Или я снова ошибаюсь? 😉
2. Я думаю, вы, вероятно, могли бы этого добиться. Mapbox-gl-js поддерживает анимированные переходы, но вы должны делать это довольно косвенно. Не стесняйтесь задать другой вопрос о них.