【问题标题】:How do I force redraw with Google Maps API v3.0?如何使用 Google Maps API v3.0 强制重绘?
【发布时间】:2013-08-27 21:03:51
【问题描述】:

我有一个相当复杂的地图应用程序,可以处理多个自定义标记等。我有一个名为 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');这也不起作用。

有没有办法绝对强制谷歌地图重绘?

【问题讨论】:

  • 你能给我们一个链接吗?
  • 右侧菜单的左上角有一个小标签。
  • 另外,如果您将浏览器窗口设置为此更改会强制缩放更改的大小,那么它可以工作。只有在不需要更改缩放时才不会进行调整。我还尝试强制进行 1 步缩小并重新放大,但这并没有解决问题。
  • 我也有同样的问题,我想在窗口大小没有变化的情况下刷新地图!

标签: jquery google-maps-api-3 jquery-animate


【解决方案1】:

google.maps.event.trigger(MapInstance,'resize') 对我来说很好用,把它放在函数 fitMap 的开头。

你错过了什么:

目前(不在上面发布的代码中,在您的实时代码中),您在每个 step 上调用 resizeWindow

当您在step 上调用此函数时,该函数将在当前步骤的动画完成之前被调用。结果是resizeWindow在整个动画完成后不会被调用,例如地图右侧的边距。

解决方案:同时在animationcomplete 回调上调用resizeWindow

【讨论】:

  • 啊。谢谢!我忘记了我在测试时放在那里的代码副本。我正在尝试各种方法。但我不知道在 step 之前调用了 step 函数。
  • 这不适用于 3.32 或更高版本。来自这篇文章 (stackoverflow.com/questions/743214/…):随着 Maps JavaScript API 3.32 版中的新渲染器版本的发布,resize 事件不再是 Map 类的一部分。
猜你喜欢
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
相关资源
最近更新 更多