2009-07-19 4 views
7

При размещении карты google на вкладке jquery-ui карта не отображается должным образом при определенных обстоятельствах. Для воспроизведения:Google map + jQuery: ошибка рендеринга

  1. Go here
  2. Нажмите 'список' ссылка
  3. Изменение размера окна браузера
  4. Нажмите на 'карте' ссылка

Заметим, что некоторые из накладками топонимических правильно рисуют, а другие нет. Я фактически лишил все jquery-ui вещи, чтобы ограничить область проблемы, и это, по-видимому, просто приложение отображения: hide/display: block, который вызывает проблему.

ОБНОВЛЕНИЕ

Также эта ошибка возникает, время от времени, так же при переключении между дисплеем: нет/блок - например, изменение размера не происходит. Это, по-видимому, наиболее распространено в IE (8).

+0

Это для API Карт Google v2 или v3? Я работаю с v3 и имею подобные проблемы, но пока не смог их решить на 100%. –

+0

Я решил эту проблему, давайте посмотрим на http://stackoverflow.com/a/13380866/1823525 –

ответ

0

попробовать это:

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

после

map_initialize(); 

, потому что вы должны сказать карту, которая изменяет размер страницы, может быть, это проблема, которую вы испытываете не является Jquery один

EDIT

ОКудалить

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

и заменить

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

с:

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

resizeMap() будем называть Карт Google checkResize() на конкретной карте.

Источник: 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

Звучит неплохо в теории, но не работает для меня на практике :((пример обновлен) –

+0

ваш обновленный пример don ' У меня проблема уже не для меня, Я использую firefox 3.5, что вы используете? –

+0

Firefox 3.5.1 Я попробую в нескольких других браузерах - задаюсь вопросом, есть ли у меня проблемы с кешированием. отправьте пару скриншотов, если проблема не исчезнет, ​​просто чтобы подтвердить, что это такое. Cheers. –

3

Try вызова map.onResize() после показать карту каждый раз.

Это может не сработать нормально, если оно вызывается, когда карта скрыта с помощью дисплея: нет, поскольку она будет иметь нулевую высоту и ширину.

+1

Yup, дисплей: нет, безусловно, проблема. –

3

Из online docs:

Используйте отходящий левый метод скрытия неактивных вкладок панели. Например. в таблице стилей замените правило для селектора классов ".ui-tabs.. UI-Вкладки-скрытие»с

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

Использование jQuery Google Maps plugin это было с той же проблемы с закладками JQuery UI

Карта создается следующим образом:

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

Это было (но не быстро), позвонив по телефону

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

После отображения карты div. Я тестировал это на FF и Safari, кроме того

resizeTo(screen.width, screen.height); 

Работает в FF, но не в IE или Safari.