Странный вопрос, наверное, но у меня есть немного кода на моей странице ...
$(".map-overlay-left").click(function () {
$("#map-holder").hide('slow');
var gmarkers = [];
var side_bar_html = "";
var map = new GMap2(document.getElementById('map-holder'));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var Africa = new GLatLng(-2.767478,23.730469);
map.setCenter(Africa, 4);
$.get("http://xx.xxx.xxxx.xxx/xml-feed-google-maps",{},function(xml) {
$('marker',xml).each(function(i) {
html = $(this).text();
lat = $(this).attr("lat");
lng = $(this).attr("lng");
label = $(this).attr("label");
var point = new GLatLng(lat,lng);
var marker = createMarker(point,label,html);
map.addOverlay(marker);
});
});
$("#map-holder").show('slow');
});
Это работает фантастически и делает то, что я хочу, функционально, но не с точки зрения пользовательского интерфейса. Он предназначен для того, чтобы сначала сделать хороший переход, чтобы скрыть div "map-holder", отобразить внутри него карту Google, а затем сделать хороший переход обратно к размеру. Переход по умолчанию JQuery показать / скрыть.
Теперь проблема, которую я, похоже, получаю, заключается в том, что карта Google отображается, когда этот $("#map-holder").hide('slow');
все еще работает, и вы видите проблески карты, прежде чем она прячется, а затем снова открывается, что вроде как бросает вызов эффект.
Таким образом, у кого-нибудь есть идеи, как я могу замедлить код, чтобы дождаться завершения функции hide, прежде чем делать остальное? (в идеале я не хочу использовать что-то жестко запрограммированное, например, setTimeout).
Заранее спасибо!
Шади
ОБНОВЛЕНИЕ 1
Я перезваниваю функцию hide, но она очень странно влияет на GMap. В Chrome / FF / Safari он отображает только небольшой сегмент в углу карты, когда он появляется. а в IE он полностью сбрасывается и центрируется в другом месте. GMap, похоже, не любит, когда его визуализируют в скрытом div.
Вы можете увидеть его здесь http://afid.staging.dante -studios.com / он находится спереди (просто нажмите кнопку воспроизведения в Азии или Африке, чтобы увидеть странный эффект).
Есть идеи, как решить эту проблему?
ОБНОВЛЕНИЕ 2
Попытка исправить проблему неправильной визуализации карты Google в скрытом элементе с помощью этого:
$(".map-overlay-left").click(function () {
$("#map-holder").hide('slow', function(){
var gmarkers = [];
var side_bar_html = "";
var map = new GMap2(document.getElementById('map-holder'));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
var Africa = new GLatLng(-2.767478,23.730469);
map.setCenter(Africa, 4);
$.get("http://afid.staging.dante-studios.com/xml-feed-google-maps",{},function(xml) {
$('marker',xml).each(function(i) {
html = $(this).text();
lat = $(this).attr("lat");
lng = $(this).attr("lng");
label = $(this).attr("label");
var point = new GLatLng(lat,lng);
var marker = createMarker(point,label,html);
map.addOverlay(marker);
});
});
});
$("#map-holder").show('slow');
map.checkResize();
map.setCenter(Africa, 4);
});
Но, увы, неудача с методом map.checkResize();
. Есть идеи?