传单标记集群 Spiderfy 不工作

问题描述 投票:0回答:1

根据 markercluster 文档

spiderfy:Spiderfies 该集群的子标记

我认为如果我有这样的代码,单击一个标记将导致包含的标记簇蜘蛛化(如果它确实是一个标记簇,而不是一个独立的标记)。

const foo = L.markerClusterGroup();

for a bunch of points {
    const marker = L.marker(latlng);
    marker.on('click', function(e) {
       … do stuff …
       foo.spiderfy(e.target);
    });
    foo.addLayer(marker);
}
map.addLayer(foo);

但是,我收到错误:

foo.spiderfy()
不是函数。我怎样才能实现我想要的?

总而言之,如果我点击一个集群,它就会出现蜘蛛网。然后,如果我单击该集群中的单个标记并触发单击事件,我希望该集群保持蜘蛛状,而不是折叠成一个集群。

leaflet leaflet.markercluster
1个回答
0
投票

看一下这段代码,它应该可以工作。

const foo = L.markerClusterGroup();

for (const point of points) { 
    const marker = L.marker(point.latlng);
    marker.on('click', function(e) {
       // We find the right cluster
       const cluster = foo.getVisibleParent(marker);
       
       if (cluster) {
           // Spiderfy only if marker is in cluster
           foo.spiderfy(cluster);
       }
    });
    foo.addLayer(marker);
}

map.addLayer(foo);

foo.getVisibleParent(marker) 返回标记的最近的可见父级,它可能是一个簇。 如果标记实际上在集群中,则 foo.spiderfy(cluster) 在集群上执行“spiderfy”。

© www.soinside.com 2019 - 2024. All rights reserved.