Изменение размера Google Maps api v3 DIV с помощью jquery - плитки не обновляются должным образом - PullRequest
6 голосов
/ 21 марта 2012

Я использую Google Maps api v3 для создания карты, размер которой можно изменить (div расширяется и сокращается с помощью переключателя jQuery).В ходе исследования я обнаружил, что мне следует вызвать google.maps.event.trigger (map, 'resize');при изменении размера карты.Я сделал это, но у меня все еще есть проблемы с обновлением плиток.

Код, который я использую:

<script>
document.write('<a id="expandMap" href="#" target="_blank" title="Expand the map">+ expand map</a>');

/* Expand map_canvas DIV */

jQuery('#expandMap').toggle(function(){
jQuery('a#expandMap').text('- contract map');
jQuery('a#expandMap').attr('title', 'Contract the map');
jQuery('#map_canvas').animate({'height': '600px'}, 750, 'swing');
google.maps.event.trigger(map, 'resize');
}, function(){
jQuery('a#expandMap').text('+ expand map');
jQuery('a#expandMap').attr('title', 'Expand the map');
jQuery('#map_canvas').animate({'height': '193px'}, 750, 'swing');
google.maps.event.trigger(map, 'resize');
});

/* Expand map_canvas DIV End */
</script>

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

Очень ценю любую помощь с этим!

Приветствия!

1 Ответ

8 голосов
/ 21 марта 2012

animate() занимает некоторое время.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...