我有一个相当复杂的地图应用程序处理多个自定义标记等。我有一个名为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 v3.0有一个奇怪的地方,如果没有实际改变,重新绘制就不会发生。在这种情况下,我的可用窗口从屏幕宽度菜单变为实际全屏。但没有重绘发生。
我试过google.maps.event.trigger(map,’resize’);这也不行。
有没有办法绝对强制Google Maps重画?