Google地图中的灰色区域

我已经在我的应用程序中实现了Google地图(以模态forms),但是正如您在下面的图像中看到的那样,有一个灰色区域我当然想要摆脱它。 可以移动地图以使灰色区域消失,但不应该需要。

事情就是地图显示在一个模态框内,其中包含了点击显示模态按钮时动态创建的大量内容。 似乎问题可能是在加载模态之前地图内容没有完全加载,但我不确定……

HTML:

...  ... 

JS:

  function initializeMap(latitude, longitude) { var place = new google.maps.LatLng (latitude, longitude); var myOptions = { zoom: 10, center: place, mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(document.getElementById("map"), myOptions); var marker = new google.maps.Marker({ position: place, map: map, title: "" }); }; $('.modal-btn').click(function(){ var producerId = $(this).attr('id'); GetProducer(producerId, function(data) { // <--- data retrieved through ajax initializeMap(data.latitude, data.longitude); var titel = data.name; var content = "

" + "

" + data.name + ", " + data.address + "
" + data.zipcode + " " + data.town + "

" + "

https://stackoverflow.com/questions/13901520/grey-area-in-google-maps/" + data.url + "

"; $('#myModalLabel').html(titel); $('#modal-left').html(content); }); });

图1:

图2:

发生这种情况的常见原因是地图的大小在初始化地图后会发生变化。 如果由于某种原因更改了id =“map”的div的大小,则需要触发“resize”事件

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

您可以尝试在javascript控制台中触发事件,看看它是否有帮助。

请注意,这个答案是猜测,因为问题中没有任何内容可以使用,所以如果它没有帮助,请告诉我。

把google.maps.event.trigger(map,“resize”); 在setTimeout函数中,以便在触发事件后触发它。

我一直在寻找解决方案。 我有完全相同的问题,我不是唯一的问题。 上面的代码行还不够,但我注意到手动调整浏览器的大小就是修复问题。 如果它也解决了你的问题,那么我的解决方法就是:

1)在初始化地图的函数结束时添加它。 它将添加一个监听器并在加载地图时调用该函数。 它基本上会模拟resize。

 google.maps.event.addListenerOnce(map, 'idle', function(){ $(window).resize(); map.setCenter(yourCoordinates); }); 

resize后我不得不重新调整地图

2)创建一个resize的侦听器,调用google map resize事件,如下所示:

 $(window).resize(function() { if ($("#map_canvas").children().length > 0){ if (map) google.maps.event.trigger(map, 'resize'); }}); 

我还必须将地图放在我的初始化函数之外…我知道它不是最好的解决方案,但现在可以使用了。 不要担心resize()调用。

它似乎与包含谷歌地图的隐藏div有关。 我也在这个网站 jfyi找到了类似的解决方案。 祝好运!

这对我有用:

  var center = map.getCenter(); // . . . your code for changing the size of the map google.maps.event.trigger(map, "resize"); map.setCenter(center); 

取自@Bruno提到的链接