欢迎来到SO!
如果您 在调整浏览器窗口大小后, Leaflet地图 突然正常工作
,那么您会遇到经典的“在地图初始化时无效的地图容器大小”:为了正常工作,Leaflet在初始化地图(
L.map("mapContainerId"))时会读取地图容器大小。如果您的应用程序隐藏了该容器(通常是通过CSS
display:none;或某些框架选项卡/模式/等等),或者稍后更改了其尺寸,则Leaflet将不会意识到新的尺寸。因此,它将无法正确渲染。通常,它仅下载它认为显示的容器部分的图块。如果容器在地图初始化时被完全隐藏,则它可以是左上角的单个图块。
当将地图容器嵌入“选项卡”或“模式”面板中时,经常会出现这种错误,可能使用流行的框架(Bootstrap,Angular,Ionic等)。
Leaflet侦听浏览器窗口调整大小事件,并在发生这种情况时再次读取容器大小。这解释了为什么地图突然在调整窗口大小时起作用。
您也可以
map.invalidateSize()至少在首次使用正确尺寸渲染容器时,通过在显示选项卡面板时调用(例如,在选项卡按钮单击上添加侦听器)来手动触发此更新。
至于实现选项卡按钮单击侦听器,请对该主题进行新的搜索:对于大多数流行的框架,您应该有足够的资源来解决此问题。



