Размер холста карты MapboxGL JS

Я использую Mapboxgl с React, чтобы показать карту на моей веб-странице, но у меня большие проблемы с установкой размера mapbox. Я написал свой собственный класс css, чтобы хотя бы показать карту, иначе по какой-то причине он отображается с нулевой высотой. мой пользовательский класс css выглядит так

.custom-map {
  display: flex;
  width: 100%;
  height: 54em;
}

Я также загрузил файл mapboxgl css локально в свой проект, полный файл загружается на страницу. мой текущий исходный код можно найти здесь, я экспериментировал с кучей стилей, где я установил стили здесь

 <div
        ref = {el => (this.mapContainer = el)}
        className = "mapboxgl-map absolute custom-map top right left bottom"
 />

В настоящее время контейнер mapbox выглядит очень похожим на это, обратите внимание, что информация, всплывающая из mapbox, доходит до того места, где я хочу, а карта - нет.

Размер холста карты MapboxGL JS Файл css mapbox устанавливает высоту карты в%, но высота в% по какой-то причине не работает, я должен установить высоту с помощью em. Отключив настраиваемую карту и установив высоту в em из файла css mapbox, я получаю фактическую высоту больше 100%. Изменение свойства width из .mapboxgl-map ничего не делает, даже при использовании em.

Я не уверен, где находится ошибка, поэтому мне сложно опубликовать всю соответствующую информацию, которая может потребоваться для решения этой проблемы, я буду рад опубликовать любую дополнительную информацию, которая потребуется. Заранее благодарим вас за ответы!

Размер холста карты MapboxGL JS

Кажется, что карта правильно меняет размер после изменения размера окна и возвращается в полноэкранный режим после загрузки страницы.

Kristian Munter 22.08.2018 14:53

На ваш вопрос будет легче ответить с помощью демонстрации, показывающей проблему.

thirtydot 24.08.2018 02:23
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
2
1 958
1

Ответы 1

У меня возникла аналогичная проблема, когда я создаю собственную оболочку для новой карты MapboxGL. Эта проблема проявляется только в Firefox и Safari. Это не лучшее решение, но может оказаться достойным обходным путем. Добавьте в компонент карты следующее:

this.map.once('load', () => {
  this.map.resize()
})

Это означает, что первоначальный рендер карты будет выглядеть ужасно. Вам понадобится что-нибудь, чтобы замаскировать процесс загрузки. Но при отсутствии решения, которое заставит его правильно отрисовывать в первый раз в виртуальном доме, это могло бы сработать.

Другие вопросы по теме