我的代码如下:
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(),但没有任何乐趣。
答案 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);
在包含元素改变大小之前存储的中心。