Folium创建的带标记地图无法在浏览器显示如何修复
问题根因
代码仅在内存中创建了Folium地图实例,没有执行导出、唤起浏览器的逻辑,运行后对象会被直接回收,不会有任何可视化输出。
原代码最后一行fo.Map().add_child(volcano)既没有把地图对象存为变量,也没有指定输出方式,等于创建完对象就直接丢弃了。
修复方案
按以下两点调整代码即可:
- 把初始化的地图对象赋值给独立变量,建议初始化时就设置好地图中心点、初始缩放等级,避免打开后找不到点位
- 调用
save()方法把地图导出为本地HTML文件,再通过Python标准库webbrowser自动唤起默认浏览器打开该文件
修复后的完整代码:
import numpy as np import pandas as pd import folium as fo import webbrowser import os # 替换为你的csv文件实际路径 data = pd.read_csv("...") lat = list(data["Latitude"]) lon = list(data["Longitude"]) name = list(data["Name"]) # 初始化地图,中心点取所有点位经纬度平均值,初始缩放等级设为6可按需调整 m = fo.Map( location=[sum(lat)/len(lat), sum(lon)/len(lon)], zoom_start=6 ) volcano = fo.FeatureGroup(name="Volcano") for a, b, c in zip(lat, lon, name): volcano.add_child(fo.Marker( location=[a, b], popup=c, icon=fo.Icon(color='blue') )) m.add_child(volcano) # 可选:添加图层控制开关 m.add_child(fo.LayerControl()) # 保存地图到本地HTML文件 save_file = "volcano_marker_map.html" m.save(save_file) # 自动调用默认浏览器打开生成的地图 webbrowser.open("file://" + os.path.realpath(save_file))
补充说明
如果是在Jupyter Notebook类的交互式环境运行,不需要调用webbrowser模块,代码最后直接输入地图变量名m,即可在单元格输出位置直接渲染展示地图,不用额外打开HTML文件。
内容的提问来源于stack exchange,提问作者Naman Dalsania
相关产品推荐
相关产品推荐

