我有一个<div>
包含传单的地图。在某些情况下,高度<div>
会改变。我想将地图调整为周围的新尺寸,以<div>
使旧的中心位于调整后的较小或较大地图的中心。我尝试使用该invalidateSize()
功能,但它似乎根本不起作用。map-container-resize
事件发生后如何调整地图的大小并居中?
$mapContainer.on('map-container-resize', function () {
map.invalidateSize(); // doesn't seem to do anything
});
编辑以提供更多上下文:
地图容器最初的样式为
#map-container {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
transition: height 0.5s ease-in-out;
}
用户单击某个按钮后,页面底部将显示另一个面板,并且地图容器的高度将减小到小于100%(例如80%)的高度。
单击此按钮后,将触发map-container-resize事件,以便我可以调整地图的大小并以其旧的(即在调整大小之前)为中心。然后,将地图本身也调整为初始高度的80%。
invalidateSize
我想要的APi文档似乎是我想要的:
“检查地图容器的大小是否已更改,如果更改,则更新地图[...]”
但是getSize
在调用invalidateSize之前和之后看一下函数的输出,没有什么不同,地图保持原来的大小。
问题在于的大小调整#map-container
div
是通过CSS过渡完成的。当对invalidateSize的调用发生时,过渡尚未开始,更不用说结束了,因此传单地图无法识别其周围尺寸的任何变化div
。
map-container-resize
延迟触发事件可以解决问题。这条路 :
setTimeout(function(){ map.invalidateSize()}, 400);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句