Столкнулся с данной проблемой в своей работе. Опишу более подробно.
Объект Гугл карты, при изменении размеров контейнера, в котором рендерится карта, не актуализирует внутренние размеры поля, от которых зависит центровка. К примеру, при уменьшении контейнера, центр «отползал» вправо-вниз. При увеличении ситуация становилось ещё хуже, т.к. карта переставала рендерится на весь контейнер, а рисовалась только в части соответствующей старым размерам области отрисовки.
Остальные инструменты карты позиционировались верно, отслеживая размеры контейнера.
Если вы столкнулись с подобной проблемой, то вам поможет следующий трюк:
1 2 3 4 5 6 7 |
// пусть объект карты гугл определен в переменной map var map = new google.maps.Map( document.getElementById('mymap'), {}); ... // Ре-инициализация внутренних размеров var center = map.getCenter(); google.maps.event.trigger(map, 'resize'); map.setCenter(center); |
Мы запоминаем центр карты, имитируем событие resize и восстанавливаем позицию центра.