2009-07-19 17 views
7

Po umieszczeniu mapy google w zakładce jquery-ui mapa nie wyświetla się poprawnie w pewnych okolicznościach. Aby odtworzyć:Google map + jQuery: renderowanie błędu

  1. Przejść here
  2. Kliknij 'list' odnośnik
  3. Zmiana rozmiaru okna przeglądarki
  4. Kliknij 'mapy' Link

Zauważ, że niektóre z nakładkami nazwa miejsca narysuj poprawnie, ale inne nie. Naprawdę usunąłem wszystkie elementy jquery-ui, aby ograniczyć zakres problemu i wydaje się, że jest to tylko aplikacja wyświetlania: ukryj/wyświetl: blok, który powoduje problem.

UPDATE

Błąd występuje również od czasu do czasu, gdy tylko przełączania pomiędzy wyświetlaniem: brak/blok - np nie ma zmiany rozmiaru. Wydaje się to być najbardziej powszechne w IE (8).

+0

Czy jest to dla interfejsu Google Maps API v2 lub v3? Pracowałem z v3 i miałem podobne problemy, ale nie udało mi się jeszcze rozwiązać ich w 100%. –

+0

Rozwiązałem ten problem, spójrzmy na http://stackoverflow.com/a/13380866/1823525 –

Odpowiedz

0

spróbuj tego:

if (window.attachEvent) { 
    window.attachEvent("onresize", function() {this.map.onResize()}); 
    } else { 
    window.addEventListener("resize", function() {this.map.onResize()} , false); 
    } 

po

map_initialize(); 

bo trzeba powiedzieć mapę, że strona jest zmieniany, może w tym tkwi problem nie jesteś posiadające jQuery jeden

EDYTOWANIE

Ok usunąć

if (window.attachEvent) { 
      window.attachEvent("onresize", function() {map.onResize()}); 
     } else { 
      window.addEventListener("resize", function() {map.onResize()} , false); 
     } 

i zastąpić

$('#map').show(); 

z:

$("#map").show(1, function() { 
      resizeMap(); 
     }); 

resizeMap() wywoła Google Maps' checkResize() na danej mapie.

źródło: http://jqueryui.com/demos/tabs/#...my_slider.2C_Google_Map.2C_sIFR_etc._not_work_when_placed_in_a_hidden_.28inactive.29_tab.3F

+0

Brzmi nieźle w teorii, ale nie działa dla mnie w praktyce :((przykład zaktualizowany) –

+0

Twój zaktualizowany przykład don ' mam już dla mnie problem, Używam firefox 3.5, czego używasz? –

+0

Firefox 3.5.1 Spróbuję w kilku innych przeglądarkach - zastanawiam się, czy mam jakieś problemy z buforowaniem. opublikuj kilka zrzutów ekranu, jeśli problem będzie się powtarzał, tylko po to, aby potwierdzić, co to jest.) Pozdrawiam, –

3

Spróbuj zadzwonić map.onResize() po pokażesz mapie za każdym razem.

Może nie działać poprawnie, jeśli zostanie wywołana, gdy mapa jest ukryta za pomocą wyświetlacza: brak, ponieważ ma zerową wysokość i szerokość.

+1

Tak, wyświetlacz: żaden nie jest zdecydowanie problemem. –

3

Z online docs:

pomocą techniki off-lewo za ukrywanie nieaktywnych panele tab. Na przykład. w swoim arkuszu stylów zastąp regułę dla ".ui-tabs selektora klasy".. UI-tabs-hide”z

.ui-tabs .ui-tabs-hide { 
    position: absolute; 
    left: -10000px; 
} 
3

Używanie jQuery Google Maps plugin się było o tym samym problem z kartami jQuery UI

Mapa jest tworzona tak:

$("#google-map").googlemap({ 
    controls: false, 
    labels: true, 
    zoom: 9, 
    latitude: 51.5, 
    longitude: 0, 
    debug: false 
}); 

Został rozwiązano bardzo łatwo (ale nie szybko), dzwoniąc pod numer

$("#google-map").googlemap().getMap().checkResize(); 

Po wyświetleniu mapy div. Testowałem to na FF i Safari, dodatkowo

resizeTo(screen.width, screen.height); 

Działa w FF, ale nie w IE ani Safari.