Leaflet Markercluster开关打开/关闭

Leaflet Markercluster开关打开/关闭,leaflet,Leaflet,他们要求我提供一个“切换按钮”来打开和关闭集群。有人能帮我打开/关闭集群吗 注意:加载超过30000个点创建两个层,一个带标记聚类,一个不带标记聚类,并将它们添加到传单控件中。例如: var littleton = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'), denver = L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'), auror

他们要求我提供一个“切换按钮”来打开和关闭集群。有人能帮我打开/关闭集群吗


注意:加载超过30000个点

创建两个层,一个带标记聚类,一个不带标记聚类,并将它们添加到传单控件中。例如:

var littleton = L.marker([39.61, -105.02]).bindPopup('This is Littleton, CO.'),
denver    = L.marker([39.74, -104.99]).bindPopup('This is Denver, CO.'),
aurora    = L.marker([39.73, -104.8]).bindPopup('This is Aurora, CO.'),
golden    = L.marker([39.77, -105.23]).bindPopup('This is Golden, CO.');

var cities = L.layerGroup([littleton, denver, aurora, golden]);

var citiesClustered = new L.MarkerClusterGroup();
markers.addLayer(littleton);
markers.addLayer(denver);
markers.addLayer(aurora);
markers.addLayer(golden);

var streets   = L.tileLayer(mapboxUrl, {id: 'examples.map-i86knfo3', attribution: mapboxAttribution});
var map = L.map('map', {
center: [39.73, -104.99],
zoom: 10,
layers: [streets, cities]
});

var baseMaps = {
"Streets": streets
};

var overlayMaps = {
"Cities": cities,
"Clustered cities": citiesClustered
};

L.control.layers(baseMaps, overlayMaps).addTo(map);

您还可以创建一个自定义控件,该控件将取消标记的群集,但是该控件已经存在,而且很容易实现。

它的速度非常慢。在标记和簇之间切换后,我必须再次等待(即使它们之前已加载),是否可以预先加载它们并仅在选择时显示它们和/或仅在特定缩放级别>1时显示标记覆盖选项。井标记簇中有一个选项,可以在指定的缩放级别上取消标记簇。这是一种不用图层控件的方法。2.另一种方法是创建自定义传单控件,并在单击按钮上取消标记的群集。当然,您可以根据当前的缩放级别启用/禁用控件。我知道可以在指定的缩放级别上取消标记的群集。但是(据我所知)你不能动态地改变它。选择2对我来说并不完全清楚。两年后恢复这一点。如果标记正在移动,这种解决方法会导致很多问题。因为这个问题已经发布了,所以我制作了提供这个确切功能的子插件。另见