如何在隐藏元素中启动 Gmap
How to initiate Gmaps in hidden element
我有一个元素(#hidden-element),默认情况下是隐藏的。当我单击按钮(#btn 切换)时,我想使此元素可见。目前,一切都很好。该元素确实会显示,但是如果我第一次单击该按钮,地图将不会显示。然后我单击以隐藏元素,然后再次单击以第二次显示隐藏元素,现在地图在这里。
所以,我的问题是,我怎么能知道地图将第一次出现(我必须初始化地图或类似的东西),我可以以某种方式破坏地图对象吗?甚至有必要销毁地图对象吗?
$(document).ready(function(){
// function for showing the map with markers - gmaps4rails gem
function showMap(){
var handler = Gmaps.build('Google');
handler.buildMap({ internal: {id: 'multi_markers'}}, function(){
var markers = handler.addMarkers([
{ lat: 43, lng: 3.5},
{ lat: 45, lng: 4},
{ lat: 47, lng: 3.5},
{ lat: 49, lng: 4},
{ lat: 51, lng: 3.5}
]);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
});
}
// this will hide the element when document is ready
$("#hidden-element").hide();
// if I click on button with ID btn-toggle, element will shows up or hide
$("#btn-toggle").click(function(){
if ($('#hidden-element').is(':hidden')){
// is necesarry to have condition and check if element is hidden or visible?
} else if ($('#hidden-element').is(':visible')){
// element is hidden? Show it!
showMap();
}
$("#hidden-element").toggle(1000);
});
});
所以这不是库的错误。我认为Gmaps4Rails不知道元素出现时的精确位置。因此,您必须确保该元素完全可见,然后显示地图:
$("#hidden-element").toggle(1000).promise().done(function(){
if ($('#hidden-element').is(':visible')){
showMap();
}
});
这基本上意味着地图将在元素完全可见并在屏幕上占据他的位置后加载。
相关文章:
- 我的jQuery插件参数没有正确启动,遇到了问题
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 从控制器返回后Ajax启动事件激发
- Meteor上的启动页面
- 如何防止网页加载后自动启动功能
- 如何从JavaScriptInterface启动Navigation Drawer
- window.on.scroll事件未启动
- 单击按钮后启动javascript提示
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- spine.js在启动时填充模型实例
- 如何在所有ng点击事件AngularJS上启动一个方法
- jQuery悬停在没有鼠标悬停的情况下启动
- SignalR客户端启动连接时如何设置用户
- Meteor:在启动时将html注入客户端文件
- Angular UI启动日期选择器问题
- 如何用低音量自动启动Youtube视频(iframe)
- jQuery mouseup在拖离链接后未启动
- 在同一选项卡中启动下载,而无需在Javascript中打开新选项卡或窗口
- 为什么我的控制器没有启动函数.js脚本
- 如何在隐藏元素中启动 Gmap