You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Folium:基于分组图层控制实现标记集群组可见性管理

Folium标记集群+多层级图层控制解决方案

核心层级调整思路

正确的嵌套顺序应该是:MarkerClusterGroup → FeatureGroup(net1/net2) → SubGroup(a-f) → 标记。这样图层控制的显示/隐藏操作会直接触发集群的更新,同时满足父组(net1/net2)和子组(a-f)的独立控制需求。

完整代码示例

import folium
from folium.plugins import MarkerCluster, SubGroup

# 创建基础地图
m = folium.Map(location=[40.7128, -74.0060], zoom_start=10)

# 1. 创建顶级标记集群容器
marker_cluster = MarkerCluster(name="所有标记集群")
marker_cluster.add_to(m)

# 2. 创建一级FeatureGroup(net1、net2),添加到集群容器
net1 = folium.FeatureGroup(name="net1", show=True)
net1.add_to(marker_cluster)

net2 = folium.FeatureGroup(name="net2", show=True)
net2.add_to(marker_cluster)

# 3. 创建二级SubGroup,分别添加到对应FeatureGroup
# net1下的子组
sub_a = SubGroup(net1, name="子组a", show=True)
sub_a.add_to(m)  # 注意:SubGroup需要直接添加到地图实例

sub_b = SubGroup(net1, name="子组b", show=True)
sub_b.add_to(m)

sub_c = SubGroup(net1, name="子组c", show=True)
sub_c.add_to(m)

# net2下的子组
sub_d = SubGroup(net2, name="子组d", show=True)
sub_d.add_to(m)

sub_e = SubGroup(net2, name="子组e", show=True)
sub_e.add_to(m)

sub_f = SubGroup(net2, name="子组f", show=True)
sub_f.add_to(m)

# 4. 给每个子组添加带属性的标记
# 子组a的标记(红色图标)
folium.Marker(
    location=[40.7306, -73.9352],
    popup="子组a标记1",
    icon=folium.Icon(color="red")
).add_to(sub_a)

folium.Marker(
    location=[40.7484, -73.9857],
    popup="子组a标记2",
    icon=folium.Icon(color="red")
).add_to(sub_a)

# 子组b的标记(蓝色图标)
folium.Marker(
    location=[40.6782, -73.9442],
    popup="子组b标记1",
    icon=folium.Icon(color="blue")
).add_to(sub_b)

# 其他子组标记可按此格式添加...

# 5. 添加图层控制器
folium.LayerControl(collapsed=False).add_to(m)

# 保存地图
m.save("cluster_map.html")

关键注意事项

  • SubGroup的添加方式:SubGroup必须直接添加到地图实例(add_to(m)),同时关联到父FeatureGroup(SubGroup(net1, name="子组a")),这样才能在图层控制里同时显示父组和子组的选项。
  • 集群容器的位置:MarkerCluster作为所有可切换组的父容器,确保任何子组的显示/隐藏都会触发集群的重新计算。
  • 默认显示状态:通过show=True设置所有组默认可见,符合需求。

效果验证

  • 取消勾选net1时,其下所有子组(a、b、c)的标记会隐藏,集群数量自动更新。
  • 单独取消某一个子组(如子组a),仅该子组的标记隐藏,其他子组和net2不受影响。

内容的提问来源于stack exchange,提问作者Jordan Schnell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 03:46:18