推迟谷歌地图初始化,直到显示引导标签
我已经研究了很多,似乎很多人在这里遇到了和我一样的问题,但我无法弄清楚如何修复它。
基本上我正在隐藏的bootstrap选项卡中初始化一个谷歌地图。 当我点击药丸使标签可见时,只显示地图的一小部分。
从我收集到的这是因为地图正在隐藏元素中初始化。 所以我需要在标签变得可见之后初始化地图。
我已经尝试过,我已经尝试过,但我无法正确使用代码。 任何帮助都将是宏伟的 – 我如何使地图仅在标签可见后执行?
提前致谢
<div class="tab-pane map-pane" id="map"> function initialize() { var mapOptions = { center: new google.maps.LatLng(22.39813,114.10943), zoom: 8 }; var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); } google.maps.event.addDomListener(window, 'load', initialize);
在地图选项卡链接中添加ID,以便更容易识别。 显示相应的选项卡内容时触发地图resize事件。
这样,地图仅初始化一次,而前一个答案不是这种情况。
请注意,您需要在initialize函数之外定义map变量。
您应该能够将处理程序附加到Bootstrap选项卡show事件。
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { initialize(); });
工作演示: http : //bootply.com/102241
$('#myTab a[href="#location"]').on('shown.bs.tab', function (e) { initialize(); });
$('#myTab a[href="#location"]').one('shown.bs.tab', function (e) { initialize(); });
使用.one()而不是.on() 。 这样可以防止一次又一次地重新加载地图;)
我试图让它以每个标签点击为中心..但似乎需要每次初始化…
@MrUpsidown任何其他方式我们可以居中实际位置而不是每次都初始化?
Bootstrap选项卡(以及轮播和模态)最初设置为不显示,直到它们变为活动状态,因此地图的父元素的高度/宽度为0。
我和你的Bootstrap3有同样的问题。 最后我最终得到了简单的CSS解决方案。
.tab-content.tab-pane, .tab-pane { /* display: none; */ display: block; visibility: hidden; position: absolute; } .tab-content.active, .tab-content .tab-pane.active, .tab-pane.active { /* display: block; */ visibility: visible; position: static; }
这可能会有所帮助,不需要JavaScript技巧。
.tab-content.tab-pane, .tab-pane { /* display: none; */ display: block; visibility: hidden; position: absolute; } .tab-content.active, .tab-content .tab-pane.active, .tab-pane.active { /* display: block; */ visibility: visible; position: static; }
- Google Maps Geocoder:返回postal_code
- MarkerClusterer不仅仅适用于webkit(Chrome和Safari),在Firefox中运行良好?
- Reveal Modal中的Google Map API未完全显示
- jQuery动画Google Map容器的高度
- IE8上Google Maps API的未指定错误
- Google GeoCode自动填充限制状态
- Google自动填充方法API不会通过TAB触发更改事件
- Google Maps API v3,jQuery UI标签,地图未resize
- Google Maps API v3:为symbolPath传递图像而不是内置符号