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

如何为Folium地图添加悬浮提示?解决GeoJsonTooltip报错问题

解决Folium中GeoJsonTooltip的TypeError问题

核心报错原因

这个'NoneType' object is not subscriptable错误,本质是你在Tooltip中引用的LocationID、Trips_Forcast字段没有正确出现在GeoJSON的properties属性里,或者字段路径书写错误,导致代码找不到对应值。

第一步:检查并修正GeoJSON数据结构

  1. 打开你合并后的GeoJSON文件,查看每个feature的properties节点,确认是否包含LocationID和Trips_Forcast字段。
  2. 如果缺失,重新用GeoPandas完成数据合并,确保字段被正确写入属性:
import geopandas as gpd
import pandas as pd

# 读取原始数据
geo_df = gpd.read_file("曼哈顿聚类.geojson")
trip_df = pd.read_csv("出行预测数据.csv")

# 按LocationID关联,确保字段名完全匹配
merged_data = geo_df.merge(trip_df, on="LocationID", how="left")
# 处理缺失值,避免Tooltip显示异常
merged_data["Trips_Forcast"] = merged_data["Trips_Forcast"].fillna(0)

# 导出带完整属性的GeoJSON
merged_data.to_file("合并后的聚类数据.geojson", driver="GeoJSON")

第二步:正确配置Tooltip图层

Choropleth图层无法直接绑定Tooltip,需要单独添加一个透明的GeoJSON图层来承载悬浮提示,示例代码:

import folium

# 初始化地图(曼哈顿坐标)
map_obj = folium.Map(location=[40.7128, -74.0060], zoom_start=12)

# 添加颜色映射的Choropleth图层
folium.Choropleth(
    geo_data="合并后的聚类数据.geojson",
    data=merged_data,
    columns=["LocationID", "Trips_Forcast"],
    key_on="feature.properties.LocationID",  # 必须和GeoJSON中的字段路径完全一致
    fill_color="YlGnBu",
    fill_opacity=0.7,
    line_opacity=0.1,
    legend_name="预测出行量"
).add_to(map_obj)

# 添加带悬浮提示的GeoJSON图层(透明,仅用于交互)
folium.GeoJson(
    "合并后的聚类数据.geojson",
    tooltip=folium.GeoJsonTooltip(
        fields=["LocationID", "Trips_Forcast"],
        aliases=["区域ID:", "预测出行数:"],
        style=("background-color: #fff; color: #333; font-size: 12px; padding: 8px; border-radius: 4px;")
    ),
    style_function=lambda x: {"fillOpacity": 0, "color": "transparent"}  # 设置图层透明
).add_to(map_obj)

# 保存地图
map_obj.save("曼哈顿出行预测地图.html")

关键注意点

  • key_on参数必须严格匹配GeoJSON中的字段路径,比如feature.properties.LocationID不能写成feature.LocationID
  • 确保合并后的DataFrame没有缺失值,否则Tooltip可能显示异常
  • 不要尝试直接给Choropleth返回的对象绑定Tooltip,必须单独创建GeoJSON图层实现悬浮提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:45:47