Интерактивность маркеров / точек mapbox в зависимости от выбранного метода рендеринга

#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 поддерживает анимированные переходы, но вы должны делать это довольно косвенно. Не стесняйтесь задать другой вопрос о них.