【发布时间】:2012-04-29 03:22:41
【问题描述】:
我正在使用 Twitter 的 Bootstrap 来定义我的 CSS。我制作了一个包含三个选项卡的页面。第二个选项卡包含使用 Google 地图构建的地图。但是,当打开页面并切换到带有地图的第二页时,地图并没有完全呈现。一旦我使用谷歌地图选项卡作为所选选项卡重新加载页面,地图就会完全加载。
我阅读了一些建议有同样问题的人将以下代码添加到 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,一旦选择了选项卡,就会重新加载谷歌地图部分,但我不知道该怎么做......
更新的代码仍然显示错误:
<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>
【问题讨论】:
-
您无法将谷歌地图加载到隐藏元素中。您需要在元素显示后加载地图。
-
您好 Mathletics,感谢您的帮助。我只是以以下方式更新了脚本,试图在显示元素后加载地图,但这仍然会导致错误。我已经在上面列出了更新的代码:
-
“错误”表示地图仍然无法正确显示?
-
在您的链接小提琴中,您仍然会在页面加载后立即初始化地图,而不是在显示选项卡时。您需要将
var map = new google.Maps.map(...)代码移动到您的选项卡控件中,以便在显示选项卡并且地图 div 可见后执行它。
标签: javascript jquery google-maps twitter-bootstrap