2016-03-07 114 views
0

我能够拿出这个Leaflet web map如何设置加载JSON图层的最小缩放比例?

我使用名为qgis2web的QGIS工具生成了HTML和JS文件,该工具作为QGIS项目的输入图层并生成Web文件。

但是,当我的某个图层有50,000多个点时,Javascript崩溃并且导航速度非常慢。我听说我可以实现一个条件,只有当用户放大到某个点时才会加载图层。 我知道我需要写类似:

if (map.getZoom() > 8 { 
"layer loading code goes here" 
} 

但我不知道在里面条件放什么,因为我不知道在一个层的负载发生。假设我想在用户达到8的缩放因子时加载Sell LoJack点。任何人都知道如何实现?

回答

1

数百到数千点的图层肯定会让您的浏览器遇到困难时间/冻结/崩溃,就像您所经历的那样。

您应该对集群和/或画布Leaflet plugins感兴趣。

如果你想用技术,坚持只显示超过给定缩放级别的层,你可能必须做一些事情,如:

map.on("zoomend", function() { 
    if (map.getZoom() >= 8) { 
    map.addLayer(myCrowdedLayer); 
    } else { 
    map.removeLayer(myCrowdedLayer); 
    } 
}); 

参阅单张文档adding and removing layers to map

当然,你将不得不匹配什么qgis2web使用mapmyCrowdedLayer

注意:即使使用这种技术,您的浏览器仍有很高的可能性仍然很难/崩溃。我真的推荐使用群集插件。例如,参见Leaflet.markercluster

+0

这几乎奏效。如果(map.getZoom()> = 6),我添加了这个 feature_group.addLayer(json_LoJackCoverage4JSON); }其他{ bounds_group.removeLayer(json_LoJackCoverage4JSON); feature_group.removeLayer(json_LoJackCoverage4JSON); }' 问题是这个图层仍然存在,当页面加载(初始缩放4)。只有当我放大并再缩小图层时才会隐藏。 – multigoodverse

+0

qgis2web最初没有将其添加到映射中,或者在脚本的开头以编程方式将其删除。 – ghybs

相关问题