加载页面时从地图中隐藏集群覆盖

hide clustered overlays from map when page loads

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

    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 添加到地图中。我担心这样的措辞意味着所有叠加层都 checked/markerClusters 出现,我只希望选中的叠加层出现,并在必要时进行聚类。

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

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

要克服这些问题,请查看层支持 checkIn 方法:它 "registers" 稍后要聚类的叠加层,但不会立即将其添加到聚类组中。

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