【问题标题】:hide clustered overlays from map when page loads页面加载时从地图中隐藏集群覆盖
【发布时间】:2017-09-01 21:36:38
【问题描述】:

我正在使用传单样式的图层控件、标记群集和标记群集图层支持插件来创建您在图层控件中选中或关闭的叠加层。 一切都运行良好,除了我希望在页面首次加载时地图为空白,并且用户可以选择他们想要打开的叠加层。我已经为此尝试了样式化图层控件的内置方法,但它们不起作用。 通过反复试验,我发现问题是这样的:

    var markerClusters = L.markerClusterGroup.layerSupport().addTo(map);

//monday groups
var mFood = L.layerGroup().addTo(markerClusters);
var mDrink = L.layerGroup().addTo(markerClusters);
var mEntertainment= L.layerGroup().addTo(markerClusters);

如果我不将 markerClusterGroup 添加到地图中,则在用户在图层控件中检查它们之前,不会出现叠加层。但是,这意味着标记不会聚集。我觉得这个问题可以通过 if..then.. 循环来解决,但我不确定如何创建它。 例如,如果选中了叠加层,则将 markerClusters 添加到地图中。我担心这样的措辞意味着所有覆盖都被选中/markerClusters 出现,我只希望选中的覆盖出现,并在必要时进行聚类。

【问题讨论】:

    标签: javascript controls leaflet leaflet.markercluster


    【解决方案1】:

    一般来说,只要您使用myOverlay.addTo(map)addTo(group),您的叠加层就会出现在地图上,其中group 本身已经在地图上。

    如您所见,如果您避免将markerCluters 图层支持添加到地图,就会发生这种情况。但是,正如您所描述的那样,您的叠加层存在问题。

    要解决这些问题,请查看层支持checkIn 方法:它“注册”一个叠加层以稍后进行集群,但不会立即将其添加到集群组中。

    因此,您仍将图层支持组添加到地图中,但您只需签入叠加层,以便它们现在不会出现在地图上,但会在用户稍后选择它们时显示为集群。

    【讨论】:

    • 谢谢!这是我见过的层支持的“签入”方法的最佳解释。我以前试过,但我一定是把登记线放在了错误的地方。成功了!
    • 所以我遇到了一个问题,即只有我列出的要“签入”的第一个变量是聚类。我以为它昨天工作,但今天它不是。我需要单独检查每个图层组,还是可以以某种方式列出它们?这就是我现在的样子:“markerClusters.checkIn(group1, group2, group3)” 删除逗号会停止渲染地图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多