Python使用folium库绘制交互式地图并添加点击弹窗

Owen
Owen
发布时间:2026-10-11 | 2人浏览过
原创

本文介绍如何使用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库使用的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表