У меня есть страница, и карта Google сначала находится внутри скрытого div. Затем я показываю div после того, как нажимаю ссылку, но отображается только верхний левый угол карты.
Я попытался запустить этот код после щелчка:
map0.onResize();
или:
google.maps.event.trigger(map0, 'resize')
Любые идеи. вот изображение того, что я вижу после показа div со скрытой картой в нем.
Ответы:
Просто протестировал сам, и вот как я к этому подошел. Довольно просто, дайте мне знать, если вам нужны пояснения
HTML
CSS
Javascript
источник
У меня была такая же проблема, и я обнаружил, что при отображении div вызывается,
google.maps.event.trigger(map, 'resize');
и, похоже, это решает проблему для меня.источник
Если у вас нет доступной карты переменных, это должен быть первый элемент (если вы не сделали что-то глупое) в
div
элементе, содержащем GMAP.источник
У меня была карта Google внутри вкладки Bootstrap, которая не отображалась правильно. Это было моим исправлением.
источник
'a[href="#profileTab"]'
наstep-2
который имя DIV , содержащего карту DIV.Как обновить карту при изменении размера div
Недостаточно просто позвонить
google.maps.event.trigger(map, 'resize');
Вам следует также сбросить центр карты.Как прослушивать событие изменения размера
Угловой (коллапс ng-show или ui-bootstrap)
Привяжите напрямую к видимости элемента, а не к значению, привязанному к ng-show, потому что $ watch может сработать до обновления ng-show (так что div по-прежнему будет невидимым).
jQuery .show ()
Используйте встроенный обратный вызов
Bootstrap 3 Modal
источник
Если у вас есть карта Google, вставленная путем копирования / вставки кода iframe, и вы не хотите использовать API Карт Google , это простое решение. Просто выполните следующую строку javascript, когда вы показываете скрытую карту. Он просто берет HTML-код iframe и вставляет его в то же место, поэтому он снова отображается:
версия jQuery:
HTML:
Следующий пример работает для карты, изначально скрытой на вкладке Bootstrap 3:
источник
https://www.google.com/maps/embed/v1/place?..
Также возможно просто вызвать собственное событие изменения размера окна.
Карты Google перезагрузятся автоматически:
источник
У меня была такая же проблема, у
google.maps.event.trigger(map, 'resize')
меня не работало.Я установил таймер для обновления карты после того, как стал видимым
div
...Не знаю, удобнее ли это сделать, но он работает!
источник
С jQuery вы можете сделать что-то вроде этого. Это помогло мне загрузить карту Google в Umbraco CMS на вкладке, которая не была видна сразу.
источник
Мое решение очень простое и эффективное:
HTML
CSS
Jquery
источник
Или, если вы используете gmaps.js , позвоните:
когда отображается ваш div.
источник
Я предполагаю, что исходный вопрос связан с картой, которая инициализируется в скрытом div страницы. Я решил аналогичную проблему, изменив размер карты в скрытом div после того, как документ будет готов, после его инициализации, независимо от его статуса отображения. В моем случае у меня есть 2 карты, одна отображается, а другая скрыта при их инициализации, и я не хочу инициализировать карту каждый раз, когда она отображается. Это старый пост, но я надеюсь, что он поможет всем, кто ищет.
источник
Я обнаружил, что это работает для меня:
прятаться:
показывать:
источник
При использовании внутри вкладок Bootstrap v3 должно работать следующее:
где
tab-location
- идентификатор вкладки, содержащей карту.источник
Как указали Джон Доппельманн и HoffZ, соберите весь код вместе, как показано ниже, в вашем div, показывающем функцию или событие onclick:
У меня это сработало отлично
источник
Мое решение было:
CSS:
JQuery:
источник
Мне не нравилось, что карта загружалась только после того, как скрытый div стал видимым. Например, в карусели это не работает.
Это мое решение - добавить класс к скрытому элементу, чтобы отобразить его и вместо этого скрыть с абсолютным положением, затем отобразить карту и удалить класс после загрузки карты.
Протестировано в Bootstrap Carousel.
HTML
<div class="item loading"><div id="map-canvas"></div></div>
CSS
JS
источник
используйте эту строку кодов, когда хотите показать карту.
источник
источник
Первый пост. Мой div googleMap находился внутри контейнера div с {display: none}, пока не была нажата вкладка. Была та же проблема, что и OP. Это сработало для меня:
Вставьте этот код внутрь и в конец вашего кода, где щелкнули вкладку вашего контейнера div и открыли ваш скрытый div. Важно то, что div вашего контейнера должен быть видимым до того, как будет вызвана инициализация.
Я попробовал ряд решений, предложенных здесь и на других страницах, и они не помогли мне. Сообщите мне, работает ли это для вас. Спасибо.
источник
Добавьте этот код перед div или передайте его в файл js:
Это событие будет инициировано после загрузки div, поэтому оно обновит содержимое карты без необходимости нажимать F5.
источник
После отображения карты я геокодирую адрес, а затем устанавливаю центр карты. У
google.maps.event.trigger(map, 'resize');
меня не сработало.Мне пришлось использовать
map.setZoom(14);
Код ниже:
источник
источник