Leaflet 单张标记群集在单击父群集时向所有子群集添加自定义图标
我有多个级别的标记簇(子簇可以有簇等等) 现在,当我单击一个父集群时,我想将一个自定义图标应用于子集群底部的父集群的所有子集群 我尝试收集所有子集群并对其应用图标,但没有效果Leaflet 单张标记群集在单击父群集时向所有子群集添加自定义图标,leaflet,leaflet.markercluster,Leaflet,Leaflet.markercluster,我有多个级别的标记簇(子簇可以有簇等等) 现在,当我单击一个父集群时,我想将一个自定义图标应用于子集群底部的父集群的所有子集群 我尝试收集所有子集群并对其应用图标,但没有效果 cluster.on('clusterclick',(e)=>{ const childClusters=e.layer.\u childClusters; for(子簇的常数c){ c、 options.icon=this.getSelectedClusterIcon(); } }); 如果我理解正确,您希望更改单击的“
cluster.on('clusterclick',(e)=>{
const childClusters=e.layer.\u childClusters;
for(子簇的常数c){
c、 options.icon=this.getSelectedClusterIcon();
}
});
如果我理解正确,您希望更改单击的“子”群集的外观,即放大时显示的群集(但不是放大到足够远时最终显示的单个标记)
在这种情况下,您可以使用传单.markercluster和:
iconCreateFunction
创建MCG,该函数依赖于一些标志来生成不同的图标iconCreateFunction
iconCreateFunction
中簇的\u zoom
属性进行比较refreshClusters
方法const mcg=L.markerClusterGroup({
iconCreateFunction(群集){
const ishighlight=cluster.getAllChildMarkers().some((marker)=>marker.flaggedZooms&&marker.flaggedZooms[cluster.\u zoom]);
返回ishighlight?myIconHighlighted:myNormalIcon;
},
}).on(“群集单击”,功能(e){
//如果我们想重置所有其他集群
mcg.eachLayer((marker)=>删除marker.flaggedZooms);
const cluster=e.layer;
//在子标记上标记缩放级别,
//如果我们只想在某些缩放上更改群集图标
for(cluster.getAllChildMarkers()的常量标记){
marker.flaggedZooms=marker.flaggedZooms | |{};//如果尚未完成,则初始化
marker.flaggedZooms[cluster.\u zoom+1]=true;//如果需要,标记其他缩放级别
}
//确保重新绘制群集图标
mcg.refreshClusters();
});
为什么不使用有文档记录的getAllChildMarkers()
方法?谢谢@ghybs,让我试试这个。