我目前正在使用Leaflet插件处理地图可视化。我还使用了markercluster插件来聚集我的观点。所以我现在的问题如下: 我在3个不同的层中有3种不同的标记类别。例如餐厅/咖啡厅和酒吧层。我想将所有活动层合并到特定的群集。目前这些条目是分开聚类的,但我想将它们聚集在一起。下一步将根据childMarkers为集群着色。例如。集群包括餐厅和酒吧标记=>半红/半绿,只有餐厅=>只有红色等使用markercluster聚簇多个图层
我希望有人可以帮助我找到解决方案。 谢谢!
我目前正在使用Leaflet插件处理地图可视化。我还使用了markercluster插件来聚集我的观点。所以我现在的问题如下: 我在3个不同的层中有3种不同的标记类别。例如餐厅/咖啡厅和酒吧层。我想将所有活动层合并到特定的群集。目前这些条目是分开聚类的,但我想将它们聚集在一起。下一步将根据childMarkers为集群着色。例如。集群包括餐厅和酒吧标记=>半红/半绿,只有餐厅=>只有红色等使用markercluster聚簇多个图层
我希望有人可以帮助我找到解决方案。 谢谢!
你提到你的问题2个不同的请求:
至于第1点,您显然可以将所有3种类型的标记添加到同一个MarkerClusterGroup,以便它们可以聚集在一起。如果你已经有了它们在不同的LayerGroups中,你可以简单地做myMCG.addLayers([layerGroup1, layerGroup2, layerGroup3]);
,并且MCG将获得所有添加的单个标记。但是以后不要添加/删除这些LayerGroups到/从地图中删除!
困难的部分是,当你想能够动态地添加/删除地图上的特定类型的标记。相反,这样做只是map.removeLayer(layerGroupX);
的,你就需要遍历所有的个体标记,并从MCG删除,例如:
layerGroupX.eachLayer(function (marker) {
myMCG.removeLayer(marker);
});
也this issue参见MarkerClusterGroup插件网站的原因和一些额外的例子。做相反的事情,将标记添加回MCG。
至于第2点,请参阅插件文档的Customising the Clustered Markers部分。基本上,初始化MCG时使用选项iconCreateFunction
。您传递一个函数,该函数只接受一个参数(例如cluster
),您可以使用cluster.getAllChildMarkers();
获取正在样式化的群集中包含的标记数组。然后只需遍历该数组来计算每种标记的数量,并相应地创建一个图标。
你也可以试试这个插件:q-cluster。但它没有动画效果,所以它比MCG的眼睛糖果要少得多......