Google使用bootstrap模式进行映射,部分加载

时间:2013-12-24 07:54:33

标签: html css google-maps twitter-bootstrap

地图正常加载正常div。但是在Bootstrap中,模式的一半或部分地图正在显示,但是当我打开控制台时它会修复问题并完全显示地图。

Photo without console opened

Photo with console opened

这是我的造型:

<style>
#map_canvas{
    width:100%;
    height: 230px;
    border: 1px solid #333335;
    margin-bottom:20px;
}
</style>

模态的HTML:

<!-- Map Modal -->
<div class="modal fade" id="mapModal" tabindex="-1" role="dialog" aria-labelledby="mapModalLabel" aria-hidden="false">
    <div class="modal-dialog" >
        <div class="modal-content">
            <div class="modal-header" >
                <button type="button" class="close" data-dismiss="modal" aria-hidden="false">&times;</button>
                <h4 class="modal-title" id="mapModalLabel">Map: </h4>
            </div>
            <div class="modal-body" >
                <map id="map_canvas" nid="{{nhd.nid}}"></map>
            </div>

            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
</div><!-- /.modal -->

5 个答案:

答案 0 :(得分:6)

来自文档

  

调整大小 - 当div时,开发人员应该在地图上触发此事件   更改大小:google.maps.event.trigger(map,'resize')。

因为在渲染地图时隐藏了模态,所以在显示模态后必须调用google.maps.event.trigger(map, 'resize')

打开控制台修复问题的事实是因为它强制容器调整大小,因此调整了地图的大小,从而刷新,从而正确呈现。

答案 1 :(得分:3)

在显示的bootstrap事件上调用google map initialize方法

for bootstrap 3

$("#modal_map").on("shown.bs.modal",function(){
        initialize();
    })

答案 2 :(得分:2)

在我的情况下触发没有帮助。我使用了js函数setTimeout,在打开我的模态弹出窗口后,它在我的新map-canvas中的init映射

setTimeout(initialize, 500);

答案 3 :(得分:1)

在地图初始化功能的底部添加此代码:

var initialize;

initialize = function() {
  ...
  $("#modalWindowId").on("shown.bs.modal", function(e) {
    google.maps.event.trigger(map, "resize");
    return map.setCenter(markerLatLng); // Set here center map coordinates
  });
};

查看this page了解更多信息:

答案 4 :(得分:0)

我使用bootstrap模式&#39; shown.bs.modal&#39;在显示对话框时创建地图的事件。

$('#modalX').on('shown.bs.modal', function () {
    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    pos = new google.maps.LatLng(latitude, longitude);