2013-04-13 14 views
6

Se visualizzo una mappa in una scheda che è nascosta per impostazione predefinita, quindi accedere a tale scheda (renderla visibile), la mappa non viene visualizzata correttamente. Ma quando aggiorno la pagina, la mappa viene visualizzata correttamente.Perché la mia mappa non viene visualizzata in una scheda jQuery?

Problema Image of map not rendering properly.

JavaScript di Google Maps

var map; 
function initialize() { 
    var latlng = new google.maps.LatLng(serLat, serLang); // - 34.397, 150.644); 
    var myOptions = { 
     zoom: 10, 

     width: 1270, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map"), myOptions); 
    var marker = new google.maps.Marker 
    (
     { 
      position: new google.maps.LatLng(serLat, serLang), 
      map: map, 
      width: 1270, 
      title: 'Click' 
     } 
    ); 
    //  var infowindow = new google.maps.InfoWindow({ 
    //   content: cntnt 
    //  }); 
    //  google.maps.event.addListener(marker, 'click', function() { 
    //   // Calling the open method of the infoWindow 
    //   infowindow.open(map, marker); 
    //  }); 
} 
window.onload = initialize; 

URL di jQuery Tabs http://quickerbook.imobisoft.eu/App_Themes/js/jquery.tabify.js

HTML di schede

<ul id="tabs-hd"> 
    <li class="active"><a href="#tab1">Tab One</a></li> 
    <li><a href="#tab2">Tab Two</a></li> 
    <li><a href="#tab3">Tab for Google Map</a></li> 
</ul> 

<div id="tab1">Content for tab one...</div> 
<div id="tab2">Content for tab two...</div> 
<div id="tab3"><div id="map"></div></div> 
+0

vedo il codice ora \t // Funzione aggiunto per aiutare Aggiorna la mappa e container confini $ ("# showMap"). Click (function() {$ ("# tab2") .css ({'display': 'block'}); $ ("# map_canvas"). css ({'width': '630px', 'height': '400px'}); initialize(); // alert ('showMap Clicked!'); }); initialize(); – MMeah

+0

Avendo lo stesso problema. Un dettaglio da notare è che se carichi la pagina e vai alla scheda prima che finisca il caricamento, la mappa potrebbe essere visualizzata correttamente. Se si attende il caricamento completo della pagina e quindi si passa alla scheda, non viene mai visualizzato correttamente. (dovrebbe essere la prova che il codice non è rotto, ma piuttosto che è puramente un problema con aver renderlo al momento opportuno) – Lemmings19

risposta

9

Ci sono due cose che dovete fare:.

  1. Quando riveli la scheda nascosta, assicuratevi di dimensionare correttamente il DIV container la mappa è in

  2. entrambi i casi attendere che il DIV sia visibile e dimensionato prima di creare la mappa al suo interno, oppure dopo che il DIV è visibile e dimensionato, inviare un messaggio di ridimensionamento alla mappa:

google.maps.event.trigger(map, 'resize');

+1

Non aiuta :( –

0

Ciao ho lo stesso problema u mast di avere fatto clic sul pulsante Tab e quindi è necessario chiamare initialize(); vedere quello che sto facendo i impostare questa funzione su ogni schede clic attributo

function ChangeTabs(e){ 
    $('#tabs-1').hide(); 
    $('#tabs-2').hide(); 
    $('#tabs-3').hide(); 
    $('#tabs-4').hide(); 

    var a = $.browser; 
    if (a.msie) 
    { 
     $(e.srcElement.hash).show(); 
     if(e.srcElement.hash=='#tabs-3') 
      initialize(); 
    } 
    else 
    { 
     $(e.currentTarget.hash).show(); 
     if(e.currentTarget.hash=="#tabs-3") 
      initialize(); 
    } 
1

Tutto quello che ho fatto si aggiunge un'altezza nello stile dell'elemento div e mappa iniziato ad apparire.

<div class="event-details" style="height:500px;" id="map_canvas"> 

</div> 
Problemi correlati