2013-04-13 14 views
6

Jeśli wyrenderuję mapę na domyślnie ukrytej karcie, przejdź do tej zakładki (uczyń ją widoczną), mapa nie jest wyświetlana poprawnie. Ale kiedy odświeżam stronę, mapa jest renderowana poprawnie.Dlaczego moja mapa nie jest renderowana na karcie jQuery?

Issue Image of map not rendering properly.

JavaScript Map Google

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 jQuery Tabs http://quickerbook.imobisoft.eu/App_Themes/js/jquery.tabify.js

HTML Tabs

<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

widzę kod teraz \t // Funkcja dodaje pomóc zresetować mapę i pojemnik granice: $ ("# showMap"). Kliknij (function() { $ ("# tab2") .css ({'display': 'block'}); $ ("# map_canvas"). css ({'szerokość': '630px', 'wysokość': '400px'}); initialize(); // alert ('showMap Clicked!'); }); initialize(); – MMeah

+0

Mając ten sam problem. Należy zwrócić uwagę na to, że jeśli załadujesz stronę i przejdziesz do zakładki przed jej załadowaniem, mapa może być wyświetlana poprawnie. Jeśli poczekasz, aż strona się załaduje, a następnie przejdziesz do karty, nie będzie ona poprawnie renderowana. (powinien być dowodem, że kod nie jest zepsuty, ale raczej jest to problem wyłącznie z renderowaniem go we właściwym czasie) – Lemmings19

Odpowiedz

9

Są dwie rzeczy, które trzeba zrobić.

  1. Kiedy odsłonić kartę ukrytą, upewnij się, że prawidłowo rozmiar DIV kontenera Mapa jest w

  2. Albo zaczekaj, aż DIV będzie widoczny i zwymiarowany przed utworzeniem w nim mapy, lub po zobaczeniu i rozmiarze DIV, wyślij wiadomość o zmianie rozmiaru do mapy:

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

+1

Nie pomaga :( –

0

Witam mam ten sam problem u maszt mieć kliknąć na przycisk Tab, a następnie należy zadzwonić initialize(); zobaczyć, co robię i ustawić tę funkcję w każdych kartach kliknij atrybut

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

Wszystko zrobiłem dodaje wysokość w stylu elementu div i mapa zaczęły pojawiać.

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

</div> 
Powiązane problemy