Google Maps API V3 не корректно отображается на странице с вкладками с помощью Twitter Bootstrap

Я использую Twitter Bootstrap для определения своего CSS. Я создал страницу с тремя вкладками. Вторая вкладка содержит карта, построенная с помощью Google Maps.Однако при открытии страницы и переходе на вторую страницу с картой карта не отображается полностью.Как только я перезагружаю страницу с вкладкой Google Maps в качестве выбранной вкладке карта загружается полностью.

Я читал сообщения, в которых людям с такой же проблемой советовали добавить в javascript следующий код:

google.maps.event.addDomListener(window, 'resize', function() {
    map.setCenter(homeLatlng);
});

Однако это не похоже на решение. Ниже приведен полный код:

Javascript:

<script type="text/javascript">
function initialize() {
    google.maps.event.addDomListener(window, 'resize', function() {
        map.setCenter(homeLatlng);
    });

    var myLatlng = new google.maps.LatLng(37.4419, -122.1419);
    var myOptions = {
        zoom: 13,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    downloadUrl("data.xml", function(data) {
        var markers = data.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
            var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), 
                                parseFloat(markers[i].getAttribute("lng")));
            var marker = new google.maps.Marker({position: latlng, map: map});
        }
    });
}
</script>

HTML:

<div class="tab-pane" id="orange" style="background-color:#E3F2FF;">
      <div id="map_canvas" style="width:780px; height:400px; overflow:;"></div>
</div>

Как решить эту проблему? Возможно, я могу добавить какой-нибудь javascript, который перезагружает часть карт Google после выбора вкладки, но я не знаю, как это сделать....

Обновленный код по-прежнему показывает ошибку:

<div class="tab-pane" id="orange" style="background-color:#E3F2FF;">
    <div id="map_canvas" style="width:780px; height:400px; overflow:;"></div>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript" src="util.js"></script>
    <script type="text/javascript">
      function initialize() {
        google.maps.event.addDomListener(window, 'resize', function() {
            map.setCenter(homeLatlng);
        });

        var myLatlng = new google.maps.LatLng(37.4419, -122.1419);
        var myOptions = {
          zoom: 13,
          center: myLatlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        downloadUrl("data.xml", function(data) {
          var markers = data.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) {
            var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                        parseFloat(markers[i].getAttribute("lng")));
            var marker = new google.maps.Marker({position: latlng, map: map});
           }
        });
        map.checkResize();
    }
    </script>
</div>
31
задан Markus Mitterauer 9 September 2016 в 13:09
поделиться