Мне не понравилось, что карта будет загружаться только после того, как скрытый div станет видимым. Например, в карусели это не работает.
Это мое решение - добавить класс к скрытому элементу, чтобы отобразить его и вместо этого скрыть с абсолютным положением, затем отобразить карту и удалить класс после загрузки карты.
Проверено в Bootstrap Carousel.
HTML
<div class="item loading"><div id="map-canvas"></div></div>
CSS
.loading { display: block; position: absolute; }
JS
$(document).ready(function(){
// render map //
google.maps.event.addListenerOnce(map, 'idle', function(){
$('.loading').removeClass('loading');
});
}