Javascript 隐藏父div时Google maps边界/缩放不起作用
我有一大页的用户数据,这些数据的格式便于使用手风琴区域。 单击手风琴控件,将显示相关信息。再次单击它,它将被隐藏 其中一个手风琴里面有一个谷歌地图,上面有多个别针。 当父手风琴Javascript 隐藏父div时Google maps边界/缩放不起作用,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我有一大页的用户数据,这些数据的格式便于使用手风琴区域。 单击手风琴控件,将显示相关信息。再次单击它,它将被隐藏 其中一个手风琴里面有一个谷歌地图,上面有多个别针。 当父手风琴div处于隐藏状态时,边界/缩放无效。当它可见时,边界/缩放起作用 我只能想象DOM将正在折叠的父级div设置为零高度,因此Google Maps在堆栈的整个过程中将其“视”为零,并相应地根据零高度和宽度设置边界 这是一把小提琴: 默认设置是关闭手风琴。单击“打开”按钮时,您将看到地图包含两个标记,但缩放距离太远 如果在
div
处于隐藏状态时,边界/缩放无效。当它可见时,边界/缩放起作用
我只能想象DOM将正在折叠的父级
div
设置为零高度,因此Google Maps在堆栈的整个过程中将其“视”为零,并相应地根据零高度和宽度设置边界
这是一把小提琴:
默认设置是关闭手风琴。单击“打开”按钮时,您将看到地图包含两个标记,但缩放距离太远
如果在css中注释掉.accordianarea
显示:无;
不透明度:0;
默认情况下,您将看到手风琴处于打开状态,贴图边界/缩放工作正常
有没有办法“强制”谷歌地图在手风琴关闭的情况下正确渲染?新答案:
在深入挖掘之后,我发现有一个minZoom
选项:
最小缩放(可选)
将在地图上显示的最小缩放级别。如果省略或设置为null,则使用当前贴图类型的最小缩放
如果我们检查您的map\u zoom()
函数,它将在第一次调用时返回8
如果我们将该8
与minZoom
(而不是常规的zoom
)一起使用,则无需再次调用map\u zoom()
var defaultZoom = 8;
var allMarkers = new Array();
var mapOptions = {
minZoom: defaultZoom,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
旧答案:
将map\u zoom()
移动到map\u init()
的外部,这样我们就可以在任何地方调用它
在$('.accordiancontrol')。单击
,调用map\u zoom()
更新我们的缩放:
$('.accordiancontrol')。单击(函数(){
如果($(“#accordianarea”+thisId.).is(“:可见”)){
//封闭区域
}
否则{
//开放区域
//更新缩放
map_zoom();
}
});
“我只能想象DOM将正在折叠的父div设置为零高度,因此Google Maps在堆栈中一直将其视为零,并相应地根据零高度和宽度设置边界。”
如前所述,“缩放”基于零高度和零宽度设置边界。。您可以做的是调用map_init()代码>在地图上显示。这样div就有了高度和宽度,而map就有了合适的缩放范围
$('.accordiancontrol').click(function(){
var thisId = $(this).attr('id').replace(/^\D+/g,"")
if ($('#accordianarea' + thisId).is(":visible"))
{
// Close accordianarea
}
else
{
map_init();
// Open accordianarea
}
});
刚刚做了一些进一步的测试,如果针脚之间的距离太远,minZoom会导致一些其他问题。基本上它做它应该做的。它设置了最小缩放。结果是地图在图钉上居中,但无法缩小到足以看到其中任何一个。你能分享一个更新提琴,让我试试吗?也许我以前的答案会更好,如果你在加载后更新PIN。(可能包括在OP中?)