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

使用FOLIUM绘制地图时弹窗不显示,请问代码哪里存在问题?

问题修复方案

你的代码存在两处核心问题,修改后即可实现需求:

  • 语法错误:创建Marker实例时未赋值给marker变量,导致后续添加标记时变量未定义,相关配置不生效
  • 配置问题:如果需要发射场名称默认直接展示,你使用的DivIcon方案需要调整锚点偏移避免文本被标记遮挡,若需要点击标记也能弹出名称,需要给Marker也绑定Popup组件

修正后可运行代码

# 初始化地图
site_map = folium.Map(location=nasa_coordinate, zoom_start=5)
# 遍历每个发射场,添加圆形区域、弹出窗口和固定显示的名称标签
for i,row in launch_sites_df.iterrows():
    coordinate = [row['Lat'],row['Long']]
    site_name = row['Launch Site']
    # 添加圆形区域,绑定点击弹窗
    circle = folium.Circle(
        coordinate, 
        radius=1000, 
        color='#d35400', 
        fill=True
    ).add_child(folium.Popup(site_name))
    # 创建标记,绑定弹窗,同时配置DivIcon显示固定名称
    marker = folium.map.Marker(
        coordinate, 
        # 调整icon_anchor参数,把文本向上偏移20像素,避免被圆形区域遮挡
        icon=folium.DivIcon(
            icon_size=(150,36),
            icon_anchor=(0, -20), 
            html=f'<div style="font-size: 12px; color:#d35400; font-weight:bold;">{site_name}</div>'
        )
    ).add_child(folium.Popup(site_name))
    # 将元素添加到地图
    site_map.add_child(circle)
    site_map.add_child(marker)

site_map      

效果说明

  • 发射场名称会直接固定显示在标记点上方,无需点击即可查看
  • 点击圆形区域或者标记点,都会弹出包含发射场名称的弹窗
  • 调整了icon_anchor参数避免文本和圆形区域重叠,如果位置不合适可以自行调整第二个参数的数值,负数越大文本位置越高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:39:04