Leaflet 调整传单地图的大小时,如何保持地图居中?

Leaflet 调整传单地图的大小时,如何保持地图居中?,leaflet,Leaflet,我正在使用在网页上创建地图 在地图的左侧是一个滑出的面板 当面板滑出时,地图将调整大小以填充页面上的剩余空间 当面板滑出到左侧时,贴图将调整中心点的大小并向左移动 理想情况下,地图的中心点应保持在相对中心 不可靠的ASCII表示: (“.”表示地图的初始中心点。) 这是一个重现问题的例子。看看你的JSFIDLE,如果你检查保存地图的DIV上的元素(在Chrome上右键单击选项),你会发现当选项DIV,#mapOptions向右滑动时,地图DIV实际上被推到了右边,而没有调整大小 换句话说,地图的

我正在使用在网页上创建地图

在地图的左侧是一个滑出的面板

当面板滑出时,地图将调整大小以填充页面上的剩余空间

当面板滑出到左侧时,贴图将调整中心点的大小并向左移动

理想情况下,地图的中心点应保持在相对中心

不可靠的ASCII表示: (“.”表示地图的初始中心点。)


这是一个重现问题的例子。

看看你的JSFIDLE,如果你检查保存地图的DIV上的元素(在Chrome上右键单击选项),你会发现当选项DIV,#mapOptions向右滑动时,地图DIV实际上被推到了右边,而没有调整大小

换句话说,地图的中心点实际上没有改变。
地图div刚刚向右滑动,div的右侧变为隐藏状态。

我通过调用
$(window).resize()在传单地图大小更改后解决了这个问题

更新:看起来您需要调用
map.invalidateSize()


更新的小提琴(动画不好看)

将面板幻灯片放在地图顶部怎么样?(这样就不需要重新定心/重新绘制/等等)然后它涵盖了用于缩放的地图控件。我曾考虑过将它移到右侧,让它在地图上滑动,但我更希望它能按预期工作。我无法复制这一点,因为每当我调整地图的大小时,中心都停留在中心。也就是说,使用调整大小事件处理程序可能会起作用:我添加了一个JSFIDLE,其中包含问题的副本。我检查了Chrome和IE中更新的FIDLE链接,问题仍然存在。展开面板前的地图中心不是展开面板后的地图中心。很抱歉,我不确定小提琴为什么不工作。如果在打开面板后调整窗口大小,您可以看到它与需要重新绘制的贴图相关,因为贴图确实会跳回居中。看起来您可以在动画完成后调用
map.invalidateSize()
,如果做什么告诉传单贴图大小已更改,但我不想保持居中?那部动画片很好看ugly@AlexandruC在较新的传单版本中,您可以使用
map.invalidateSize({pan:false})
Panel closed:          [][    .    ]

Panel open (current):  [  ][     . ]

Panel open (desired):  [  ][   .   ]