У меня довольно сложное приложение Maps, которое обрабатывает несколько настраиваемых маркеров и т.д. У меня есть функция, называемая resizeWindow, которую я вызываю в слушателе, чтобы при каждом изменении экрана карта перерисовывала себя, вычисляя новые границы и заставляя изменять размер. Это выглядит так:
window.onresize = function(event) { fitmap(); };
и функция изменения размера:
function fitmap(id) {
var coords = [];
var newlatlng = new google.maps.LatLng(projlat, projlng);
coords.push(newlatlng);
for (var i=0; i<markers[id].length; i++) {
newlatlng = new google.maps.LatLng(markers[id][i].latitude, markers[id][i].longitude);
coords.push(newlatlng);
}
}
var bounds = new google.maps.LatLngBounds ();
for (var i = 0, LtLgLen = coords.length; i < LtLgLen; i++) {
bounds.extend (coords[i]);
}
map.fitBounds(bounds);
и это отлично работает, когда я фактически изменяю размер окна. Но...
У меня есть меню, идущее вниз в правой части окна. Я использую jquery.animate для перемещения этого меню с экрана. Я называю функцию fitmap в качестве шагового процесса (или только один раз в конце), и он не будет перерисовывать карту.
$('#rightSide').animate({ right:"-240px" }, {
duration:1000,
step: function(now,fx) {
fitmap();
}
});
Я читал и читал об этом, и кажется, что есть странность Google Maps API версии 3.0, что перерисовка не произойдет, если ничего не изменится. В этом случае мое доступное окно меняется с экрана ширины - меню на фактический полный экран. Но перерисовывания не происходит.
Я пробовал google.maps.event.trigger(map, 'resize'); и это тоже не работает.
Есть ли способ полностью перерисовать карты Google?