2013-03-28 5 views
6

Я использовал Карты Google на многих сайтах в прошлом, но у меня возникла проблема, с которой я не сталкивался раньше. Отображается окно карт, но оно отображает только сегменты карт слева вверху и что-то после этого (даже когда я перемещаюсь) ничего не загружает вправо. Как будто окно, которое перемещается вокруг, имеет внутреннее смещение, которое выталкивает его со стороны окна просмотра. Кто-нибудь знает, что может вызвать это?Окно Google Maps, отображающее только часть карты

EDIT

Я только что обнаружил, что при изменении размеров окна, карта обновляется, и расположение фиксируется.

Карта содержится на вкладке, которая отображается через javascript (и скрыта с помощью display:none). Контейнер табуляции загружается через ajax, и когда он загружается, вызывается функция loadMap. Я попытался отложить функцию loadMap, включив ее в функцию setTimeout, которая задерживает создание карты на 1 секунду, но она по-прежнему делает то же самое (требуя изменения размера окна, чтобы исправить ее)

ответ

2

Право, я не конечно, почему он не работает, но я изменил свой код, чтобы выполнить только функцию создания карты, когда вкладка сначала открывается. Это заставляет его работать правильно

4

Это типичная проблема, с которой вы столкнетесь, когда контейнер карты скрыт или имеет нулевые размеры во время создания карты.

Обычное решение сделать один из них:

  • Defer создания карты, пока элемент контейнера не виден и размера должным образом, или

  • Вызов google.maps.event.trigger(map, 'resize') после того как карта становится видимым или изменен. Это событие сообщает API Карт, чтобы перенастроить его вычисления того, что видно на карте.

Похоже, вы уже решили его, используя первый вариант, который определенно является лучшим выбором из двух. Ваша страница будет загружаться быстрее, потому что вы не тратите время на создание невидимой карты. Если у вас есть ситуация, когда размер карты может измениться (например, изменяемое по размеру окно), тогда вы можете инициировать событие изменения размера, когда это произойдет.

Смежные вопросы