谷歌地图调整大小和中心似乎不起作用

时间:2014-08-05 07:05:05

标签: javascript html css google-maps google-maps-api-3

我的代码如下:

layoutV.layout.open('east');

google.maps.event.addListenerOnce(map, 'idle', function() {
    var center = map.getCenter();
    google.maps.event.trigger(map, "resize");
    map.setCenter(center);
});
弹出

layoutV,听众将开始调整地图的大小,并根据窗口的新大小居中。问题是,一旦我在地图中拖动鼠标,地图和标记只会居中/调整大小。如果我不这样做则没有任何反应。我错过了什么或是否应该表现得像这样?

我甚至在.setCenter之后添加了map.checkResize(),但没有任何乐趣。

3 个答案:

答案 0 :(得分:0)

试试这个

function map_resize()
{
var center = map.getCenter();                  
google.maps.event.trigger(map, 'resize'); 
map.setCenter(center); 
}

答案 1 :(得分:0)

能够通过在addlistener之前添加window.setTimeout来修复它。

layoutV.layout.open('east');

window.setTimeout(function() {
    map.setZoom(18);
}, 300);

google.maps.event.addListenerOnce(map, 'idle', function() {
     var latLngAdjust = map.getCenter();
     google.maps.event.trigger(map, "resize");
     map.setCenter(latLngAdjust); 
     map.checkResize()
});

现在,当我点击地图上的标记时,窗口会调整大小,地图和标记也会位于中心。 TY ...

答案 2 :(得分:0)

因此,idle事件仅在“平移或缩放”后触发。由于您在此事件处理程序中触发resize,因此它只会在“空闲”事件(平移或缩放)后执行代码。

我不确定layoutV.layout.open位是做什么的,但有这样的:当您尝试重新定位地图时,必须在调整大小之前获得当前中心 。所以,似乎open('east')正在这样做,所以在调用open('east')之前,将地图中心存储在var中。然后,您可以执行调整大小触发器和

 map.setCenter(center);

在包含元素改变大小之前存储的中心。