使用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
相关产品推荐
相关产品推荐

