javascript - Leaflet fitbounds display:none (Bootstrap5 tabnav)
问题描述
当页面加载时,尝试了很多小时尝试在选项卡“后面”加载传单地图(显示:无)。我知道使用invalidateSize()是必要的。
好的,使用 invalidateSize(),它可以在单击“Kaartweergave”选项卡后加载传单地图。
问题是使地图适合“边界”。
在我的传单脚本中添加此内容时:
setInterval(function () {
mymap.invalidateSize();
mymap.fitBounds(bounds);
}, 100);
但是,当尝试缩放[+]或[-]时,它可以工作,然后在 100 毫秒后,地图将由setInterval -函数重置。所以尝试setTimeout -function(一次性加载):
setInterval(function () {
mymap.invalidateSize();
}, 100);
setTimeout(function () {
mymap.fitBounds(bounds);
}, 100);
但是 setTimeout 函数不起作用。
要获得更好的解释并查看完整代码,请转到此测试网页并单击“Kaartweergave”选项卡(请参阅源代码)。
希望有人可以帮助我,我花了很多时间试验和浏览互联网/Stackoverflow,找到了一个解决方案,但没有运气:(
解决方案
您可以监听选项卡的点击事件,然后调用地图函数:
function startMap(){
setTimeout(function(){
mymap.invalidateSize();
mymap.fitBounds(bounds);
}, 200)
}
var mapTab = document.getElementById('leaflet-map-tab')
L.DomEvent.on(mapTab,'click',startMap)
不需要setInterval
推荐阅读
- google-cloud-platform - 使用参数在 Google Cloud Conductor 中触发 DAG
- doxygen - 不要从原始源显示中删除 doxygen 标记注释
- java - 如何使用 ibatis 将 ARRAY 传递给存储过程
- d3.js - 文本元素的 D3 样式
- sql - 使用 SQL 案例语句更改每个员工和每个日期的输出
- r - 根据 R 中的列将数据帧分成两半
- python - 如何使用 python 运算符在气流 dag 文件中使用 xCom?
- snaplogic - 为什么路由到错误输出的文档在通过 ULTRA 任务使用时会导致管道失败?
- javascript - 如何将变化推送到属性 href
- git - Git:从命令行使用 merge=ours 策略