#mapbox-gl #mapbox-gl-js
#mapbox-gl #mapbox-gl-js
Вопрос:
У меня есть маркер и всплывающее окно, которое я использую, которое открывается при нажатии на маркер. У исходного API Mapbox была autoPan
настройка, а у MapboxGL ее нет. Как мне заставить это работать?
Ответ №1:
Если я правильно понимаю, autoPan
убедитесь, что всплывающее окно отображается на карте при его открытии. Для достижения этой цели вы можете использовать map.flyTo()
или map.jumpTo()
перейти к местоположению всплывающего окна.
рабочий пример: https://jsfiddle.net/Ltypbkdc /
Комментарии:
1. Вы правы,
autoPan
убедившись, что всплывающее окно видно. Проблема, о которой я говорю, заключается в том, что если маркер находится в самом верхнем правом углу карты, и пользователь открывает всплывающее окно, мне нужно точно рассчитать, в какие координаты переместить карту (вверх и вправо), чтобы всплывающее окно стало видимым. Не только это, но и должно быть какое-то преобразование пикселей в координаты, если размер всплывающего окна динамический.
Ответ №2:
Чтобы включить автоматическое панорамирование всплывающих окон, все, что вам нужно сделать, это не указывать привязку всплывающего окна.
Из документов:
привязка
Строка, указывающая часть всплывающего окна, которая должна быть расположена ближе всего к координате, задается с помощью Popup#setLngLat . Варианты «центр», «сверху», «снизу», «слева», «справа», «сверху слева», «сверху справа», «снизу слева» и «снизу справа» . Если не установлено, привязка будет установлена динамически, чтобы гарантировать, что всплывающее окно попадает в контейнер карты с предпочтением «снизу».