Google地图中的灰色区域

时间:2012-12-16 13:02:02

标签: jquery google-maps google-maps-markers center

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

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

HTML:

    ...
  <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
      <h3 id="myModalLabel">Test</h3>
    </div>
    <div id="modal-left" class="modal-body left"></div>
    <div class="modal-body right">
      <div id="map"></div>
    </div>
  </div>
    ...

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 = "<p><img class='modal-img' src='" + data.imgurl + "' /></p>" +
                        "<p>" + data.name + ", " + data.address + "<br/>" +
                        data.zipcode + " " + data.town + "</p>" +
                        "<p><a href='" + data.url + "' >" + data.url + "</a></p>";

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

图片1:

图片2:

4 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:3)

go google.maps.event.trigger(map,&#34; resize&#34;);在setTimeout函数中,以便在触发事件后触发它。

答案 2 :(得分:2)

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

1)在初始化地图的函数末尾添加它。它将添加一个监听器并在加载映射时调用该函数。它基本上会模拟调整大小。

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

我必须在调整大小后重新定位地图

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

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

我还必须把地图放在我的初始化函数之外...... 我知道这不是最好的解决方案,但它现在有效。不要担心resize()调用。

好像它与包含谷歌地图的隐藏div有关。我还在this website jfyi找到了类似的解决方案。 祝你好运!

答案 3 :(得分:0)

这对我有用:

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

取自链接,@ Bruno提到

相关问题