Python使用folium库绘制交互式地图并添加点击弹窗
本文介绍如何使用Python的folium库绘制交互式地图,并通过自定义HTML弹窗展示数据。通过遍历数据框,为每个坐标点添加Marker和Popup,最终保存为HTML文件,实现点击地图显示详细信息的功能。
使用folium库生成交互式地图
在Python中,folium是一个强大的库,用于创建交互式地图。它基于Leaflet.js,可以轻松地在地图上添加标记、多边形和其他元素。本文将演示如何使用folium库生成带有自定义弹窗的地图网页。
安装与导入
首先,确保已安装folium和pandas库。可以通过以下命令安装:
pip install folium pandas核心代码实现
以下代码展示了如何创建一个带有标注的地图,并为每个数据点添加自定义弹窗。
import folium
import pandas as pd
def mark_map(data):
"""
带有标注的地图
:param data: 包含经纬度、名称和ID的数据框
:return: 保存的HTML地图文件
"""
# 初始化地图,设置中心位置和缩放级别
myMap = folium.Map(location=[20, 0], tiles="Mapbox Bright", zoom_start=2)
# 遍历数据框,为每个点添加标记和弹窗
for i in range(len(data)):
# 自定义弹窗内容,使用HTML格式
test = folium.Html(
'<b>id:{}</b></br> <b>name:{}</b></br> <b>lon:{}</b></br> <b>lat:{}</b>'.format(
data.iloc[i]['id'],
data.iloc[i]['name'],
data.iloc[i]['lon'],
data.iloc[i]['lat']
),
script=True
)
# 创建弹窗对象,限制最大宽度
popup = folium.Popup(test, max_width=2650)
# 添加标记到地图
folium.Marker([data.iloc[i]['lon'], data.iloc[i]['lat']], popup=popup).add_to(myMap)
# 保存地图为HTML文件
myMap.save('testMap.html')
if __name__ == '__main__':
# 示例数据
data = pd.DataFrame({
'lat': [-58, 2, 145, 30.32, -4.03, -73.57, 36.82, -38.5],
'lon': [-34, 49, -38, 59.93, 5.33, 45.52, -1.29, -12.97],
'name': ['Buenos Aires', 'Paris', 'melbourne', 'St Petersbourg', 'Abidjan', 'Montreal', 'Nairobi', 'Salvador'],
'id': [x for x in range(8)]
})
mark_map(data)代码解析
1. 初始化地图:使用folium.Map创建地图对象,设置中心坐标和缩放级别。这里选择了Mapbox Bright作为底图样式。
2. 遍历数据:通过for循环遍历数据框的每一行,提取经纬度、名称和ID。
3. 自定义弹窗:使用folium.Html创建HTML格式的弹窗内容,并通过folium.Popup将其绑定到标记上。
4. 添加标记:使用folium.Marker在指定经纬度处添加标记,并将弹窗添加到地图上。
5. 保存地图:调用myMap.save()将地图保存为HTML文件,可通过浏览器打开查看。
运行结果
运行上述代码后,会生成一个名为testMap.html的文件。在浏览器中打开该文件,可以看到交互式地图,点击地图上的标记点,会弹出包含ID、名称、经纬度等信息的窗口。

注意事项
- 确保已正确安装
folium和pandas库。 - 数据框中必须包含
lat(纬度)和lon(经度)列,否则无法正确添加标记。 - 弹窗内容可根据需求自定义,支持HTML格式。
以上就是Python使用folium库绘制交互式地图并添加点击弹窗的详细内容,更多关于Python地图绘制、folium库使用的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













