I have embedded a map on the third tab on a page.
Page here > ‘Itinerary’ tab
If you go straight to the tab while the page is still loading – it loads the map perfectly. However, if you wait until the page has fully loaded and then click on the tab ‘Itinerary’, the map loads totally zoomed out and not where it should be.
I have tried entering all the details like
<iframe src="http://ridewithgps.com/routes/1342529/embed" height="500px" width="100%" frameborder="0" http://maps.google.com/maps?ll=43.790716,4.166708&z=8&t=m&hl=en-GB&gl=US&mapclient=apiv3&skstate=action:mps_dialog$apiref:1&output=classic></iframe>
but it still won’t work for me. I have very little knowledge of Javascript but I’m guessing that it needs to be reloaded on the tab or something to get it to zoom in.
You are using iframe in tab structure.So,
1) When page loads fully, the iframe in itenary tab has display none. so it is not loading the zoomed map properly.
2) When you switch to itenary tab before loading completes, iframe is display block i.e visible so it loads the url/map properly.
So for this what you can do is give id to your iframe say “#itenary_map”. and reinitiate iframe when itenary tab is clicked as below
Update:
You can use below jQuery code in your main.js.
if( !jQuery( ‘#itenerary_map’ ).find(‘iframe’).hasClass(‘clicked’) ){//Check if its clicked once or else will reload iframe on every click
jQuery( ‘#itenerary_map’ ).find(‘iframe’).attr( ‘src’, function ( i, val ) { return val; });
jQuery( ‘#itenerary_map’ ).find(‘iframe’).addClass( ‘clicked’ ); // add any class to say its clicked
}
});
You can modifiy above js, by giving classes or id to your iframe. I’ve written this in generalised form.
Excellent response – just ran into something similar and worked on it a bit more to make it even more generalized:
For me, what fix was add a default width style for all iframes in my page: