remove() , you can also use the jQuery function . empty() on the div which contains the map. This function deletes everything, but the div . So you don't need to have an outer and an inner div .
I was having the same problem and discovered that when show the div, call google.maps.event.trigger(map, 'resize');
and it appears to resolve the issue for me.
Just tested it myself and here's how I approached it. Pretty straight forward, let me know if you need any clarification
HTML
<div id="map_canvas" style="width:700px; height:500px; margin-left:80px;" ></div>
<button onclick="displayMap()">Show Map</button>
CSS
<style type="text/css">
#map_canvas {display:none;}
</style>
Javascript
<script>
function displayMap()
{
document.getElementById( 'map_canvas' ).style.display = "block";
initialize();
}
function initialize()
{
// create the map
var myOptions = {
zoom: 14,
center: new google.maps.LatLng( 0.0, 0.0 ),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map( document.getElementById( "map_canvas" ),myOptions );
}
</script>
google.maps.event.trigger($("#div_ID")[0], 'resize');
If you don't have variable map available, it should be the first element (unless you did something stupid) in the div
that contains GMAP.
I had a Google map inside a Bootstrap tab, which wasn't displaying correctly. This was my fix.
// Previously stored my map object(s) in googleMaps array
$('a[href="#profileTab"]').on('shown', function() { // When tab is displayed...
var map = googleMaps[0],
center = map.getCenter();
google.maps.event.trigger(map, 'resize'); // fixes map display
map.setCenter(center); // centers map correctly
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With