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

如何在Folium中叠加多位置标签并简化重复代码?

把多个Folium标记叠加到单张地图+代码简化方案

核心思路

  1. 单地图实例:放弃为每个位置单独创建地图,只初始化一张基础地图,所有标记都挂载到这张图上。
  2. 结构化数据+循环:把所有位置的坐标、弹窗文本、标签文本整理成统一的数据结构,通过循环批量生成标记,彻底消除重复代码。

完整简化代码

from folium import Map, Circle, Popup, Marker
from folium.features import DivIcon

# 统一存储所有发射站点的信息
launch_sites = [
    {
        "coordinate": [29.559684888503615, -95.0830971930759],
        "popup_text": "NASA Johnson Space Center",
        "label_text": "NASA JSC"
    },
    {
        "coordinate": [28.562302, -80.577356],
        "popup_text": "CCAFS LC-40",
        "label_text": "CCAFS LC-40"
    },
    {
        "coordinate": [28.563197, -80.576820],
        "popup_text": "CCAFS SLC-40",
        "label_text": "CCAFS SLC-40"
    },
    {
        "coordinate": [28.573255, -80.646895],
        "popup_text": "KSC LC-39A",
        "label_text": "KSC LC-39A"
    },
    {
        "coordinate": [34.632834, -120.610745],
        "popup_text": "VAFB SLC-4E",
        "label_text": "VAFB SLC-4E"
    }
]

# 创建基础地图,选择覆盖所有站点的中心坐标和缩放级别
main_map = Map(location=[31, -98], zoom_start=4)

# 循环批量添加所有标记
for site in launch_sites:
    # 添加圆形弹窗标记
    circle_marker = Circle(
        site["coordinate"],
        radius=1000,
        color='#d35400',
        fill=True
    ).add_child(Popup(site["popup_text"]))
    main_map.add_child(circle_marker)
    
    # 添加文本标签标记
    text_marker = Marker(
        site["coordinate"],
        icon=DivIcon(
            icon_size=(20, 20),
            icon_anchor=(0, 0),
            html='<div style="font-size: 12; color:#d35400;"><b>%s</b></div>' % site["label_text"]
        )
    )
    main_map.add_child(text_marker)

# 保存地图到HTML文件(Jupyter环境可直接输出main_map查看)
main_map.save("launch_sites_map.html")

代码优势

  • 可维护性:新增/修改站点只需要在launch_sites列表里调整,无需修改逻辑代码。
  • 简洁性:消除了大量重复的复制粘贴代码,逻辑清晰易读。
  • 可视化效果:所有位置集中在同一张地图,方便整体查看和对比。

内容的提问来源于stack exchange,提问作者Ramsey A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:15:31