Согласно руководству Mapbox GL JS Quickstart , реализовать карту на веб-сайте с помощью CDN от Mapbox не составит труда.К сожалению, это не тот случай, если карта расположена внутри модального Bootstrap, который не имеет предопределенной ширины, свойства, которое устанавливается только после открытия модального окна.
В результате загружается холст Mapboxс шириной по умолчанию 400px, которая может отличаться от ширины модальной зоны и создавать ужасные ощущения для пользователя.
Кроме того, если открыть модальную область и изменить размер окна браузера, карта автоматически помещается на все горизонтальное пространство какожидается, что похоже на ответ JavaScript на событие изменения размера.
Ниже приведен соответствующий код.
HTML-файл
<div id='map'></div>
CSS-файл
#map {
height: 300px;
}
JS-файл
mapboxgl.accessToken = '...';
var map = new mapboxgl.Map({
container: 'map',
center: [..., ...],
zoom: 10,
style: 'mapbox://styles/mapbox/streets-v11'
});
Я пытался загрузить Mapbox в модале Bootstrap 3.4.0, как я ранее мог это делать при использовании Google Maps или Bing Maps, но в обоих случаях встроенныйвнутри фрейма.Поэтому я ожидал, что Mapbox заполнит весь модал, как это сделали Google Maps и Bing Maps.
Вместо этого интерфейс Mapbox (левый нижний логотип и нижняя правая информационная кнопка) был правильно размещен внутри модальногограниц, но холст, содержащий карту, был неправильно расположен.
Наконец, установка предопределенной ширины для свойства CSS #map не является решением.Если для ширины задана фиксированная ширина в пикселях, она может отображаться некорректно для всех размеров окна, хотя добавление фиксированной ширины в процентах, скажем, 100%, не помогло.