如何在加载JavaScript后调整Google Map的大小?

我有一个“mapwrap”div设置为400px x 400px,里面,我有一个谷歌“地图”设置为100%x 100%。 因此,地图加载为400 x 400像素,然后使用JavaScript我调整了“地图包裹”为100%x 100%的屏幕 – 谷歌地图调整到整个屏幕,如我所料,但瓷砖开始消失之前的右手边缘页。

有没有一个简单的函数,我可以调用导致谷歌地图重新调整到更大的尺寸“mapwrap”格?

如果您使用的是Google Maps v2,请在调整容器大小后调用地图上的checkResize() 。 链接

对于Google Maps v3,您需要以不同的方式触发resize事件:

 google.maps.event.trigger(map, "resize"); 

请参阅resize事件的文档(您需要search“resize”一词): http : //code.google.com/apis/maps/documentation/v3/reference.html#event


更新

这个答案在这里已经很长时间了,所以一个小小的演示可能是值得的,虽然它使用jQuery,但并不需要这么做。

 $(function() { var mapOptions = { zoom: 8, center: new google.maps.LatLng(-34.397, 150.644) }; var map = new google.maps.Map($("#map-canvas")[0], mapOptions); // listen for the window resize event & trigger Google Maps to update too $(window).resize(function() { // (the 'map' here is the result of the created 'var map = ...' above) google.maps.event.trigger(map, "resize"); }); }); 
 html, body { height: 100%; } #map-canvas { min-width: 200px; width: 50%; min-height: 200px; height: 80%; border: 1px solid blue; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&dummy=.js"></script> Google Maps resize demo <div id="map-canvas"></div> 

stream行的答案google.maps.event.trigger(map, "resize"); 没有一个人为我工作。

这是一个技巧,确保页面已经加载,地图也加载了。 通过设置监听器并监听地图的空闲状态,您可以调用事件触发器来resize。

 $(document).ready(function() { google.maps.event.addListener(map, "idle", function(){ google.maps.event.trigger(map, 'resize'); }); }); 

这是我的回答,为我工作。

沃尔夫冈·皮赫勒(Wolfgang Pichler)的地图在框中提供

在可拖动和可resize的div元素中加载地图。

这是最好的,它会完成工作。 它将重新调整您的地图的大小。 不再需要检查元素来重新调整地图的大小。 它做什么会自动触发重新大小的事件。

  google.maps.event.addListener(map, "idle", function() { google.maps.event.trigger(map, 'resize'); }); map_array[Next].setZoom( map.getZoom() - 1 ); map_array[Next].setZoom( map.getZoom() + 1 ); 

首先,感谢您指导我,并结束这个问题。 我find了解决这个问题的方法。 是的,让我们来谈谈。 事情是我在CakePHP3中使用GoogleMapHelper v3助手。 当我试图打开引导模式popup窗口,我遇到了地图上的灰色框问题。 它已经延长了2天。 最后我得到了一个解决这个问题。

我们需要更新GoogleMapHelper来解决这个问题

需要在setCenterMap函数中添加下面的脚本

 google.maps.event.trigger({$id}, \"resize\"); 

在JavaScript中需要包含以下代码

 google.maps.event.addListenerOnce({$id}, 'idle', function(){ setCenterMap(new google.maps.LatLng({$this->defaultLatitude}, {$this->defaultLongitude})); });