Javascript 使用markercluster对多个层进行聚类

Javascript 使用markercluster对多个层进行聚类,javascript,leaflet,leaflet.markercluster,Javascript,Leaflet,Leaflet.markercluster,我目前正在图书馆进行地图可视化工作。我也在使用这个插件来聚集我的观点 因此,我现在的问题如下: 我在3个不同的层中有3种不同的标记。例如餐馆、咖啡馆和酒吧。我想将所有活动层合并到一个特定的集群 目前,条目是单独聚集的,但我想将它们聚集在一起 下一步是根据子标记为集群着色。例如,集群包括餐厅和酒吧标记=>半红色/半绿色,仅餐厅=>仅红色等 我希望有人能帮我找到解决办法。 谢谢大家! 您在问题中提到了两个不同的要求: 有3种不同类型的标记,但都应该聚集在一起。棘手的部分是,如果您想隐藏/显示特定类型

我目前正在图书馆进行地图可视化工作。我也在使用这个插件来聚集我的观点

因此,我现在的问题如下:

我在3个不同的层中有3种不同的标记。例如餐馆、咖啡馆和酒吧。我想将所有活动层合并到一个特定的集群

目前,条目是单独聚集的,但我想将它们聚集在一起

下一步是根据子标记为集群着色。例如,集群包括餐厅和酒吧标记=>半红色/半绿色,仅餐厅=>仅红色等

我希望有人能帮我找到解决办法。
谢谢大家!

您在问题中提到了两个不同的要求:

  • 有3种不同类型的标记,但都应该聚集在一起。棘手的部分是,如果您想隐藏/显示特定类型(可能通过层控制)
  • 根据每个类型中包含的标记数自定义簇外观
  • 对于第1点,显然可以将所有3种类型的标记添加到同一个MarkerClusterGroup,以便它们可以聚集在一起。如果在不同的图层组中已经有了这些图层,只需执行
    myMCG.addLayers([layerGroup1,layerGroup2,layerGroup3])
    和MCG将添加所有单个标记。但是以后不要在地图中添加/删除这些图层组

    困难的部分是当您希望能够从地图中动态添加/删除特定类型的标记时。而不仅仅是
    map.removeLayer(layerGroupX),则需要遍历所有单个标记,并从MCG中删除它们,例如:

    layerGroupX.eachLayer(函数(标记){
    myMCG.removeLayer(标记物);
    });
    
    另请参见MarkerClusterGroup插件网站,了解原因和一些额外示例。将标记添加回MCG时,请执行相反的操作

    编辑:从那时起,我发布了一个插件,它解决了这个确切的用例。另见

    至于第2点,只需参考插件文档的一节即可。基本上,在初始化MCG时使用选项
    iconCreateFunction
    。传入一个函数,该函数只接受一个参数(例如
    cluster
    ),您可以使用
    cluster.getAllChildMarkers()
    以获取正在设置样式的集群中包含的标记数组。然后简单地遍历这个数组来计算每种类型标记的数量,并相应地创建一个图标


    您也可以尝试其他插件:。但是它没有动画效果,所以它远没有MCG那么吸引眼球。

    你好,Widdy。你问这个问题已经有一段时间了,但正如你所描述的,地图及其功能应该会引起很多人的兴趣。如果标记有多个类别,可以对标记进行聚类并给它们多种颜色,这似乎很有趣。答案对你有帮助吗(如果你还记得,5年后)?如果是这样,请接受它,以帮助他人。谢谢。我可以用PruneCluster做传单来解决这个问题。这正是我想要的。不幸的是,我以前的答案被删除了。。。对不起