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

关于Folium中TimestampedGeoJson插件的两项技术问题咨询

Folium TimestampedGeoJson 问题解决方案

1. 隐藏路线最后一个点的标记

你代码中已经在TimestampedGeoJson初始化时设置了add_last_point=False,这个参数就是用来控制是否显示路线终点标记的,设置为False即可隐藏该标记。

如果设置后标记仍未消失,可排查以下情况:

  • 确认folium版本是否支持该参数(推荐使用0.14.0及以上版本)
  • 检查路线坐标列表是否存在重复的终点,导致标记被重复渲染

2. 配置自定义图标

TimestampedGeoJson对自定义图标的配置有特定格式要求,你当前的写法需要调整,以下是修正后的代码示例:

features = [
    {
        'type': 'Feature',
        'geometry': {
            'type': 'LineString',
            'coordinates': line['coordinates']
        },
        'properties': {
            'times': line['dates'],
            'icon': 'marker',  # 必须设为'marker'才能启用自定义图标逻辑
            'iconstyle': {
                'iconUrl': "./data/test.png",  # 确保路径相对于最终生成的HTML文件
                'iconSize': [32, 32],  # 必填,定义图标尺寸,否则可能无法显示
                'iconAnchor': [16, 32]  # 可选,设置图标锚点对应地图上的坐标点
            },
            'style': {
                'color': line['color'],
            }
        }
    }
    for line in lines
]

关键注意事项:

  • icon字段必须设置为'marker',插件才会识别并应用自定义图标
  • iconstyle中的iconSize是必填项,缺失会导致图标无法正常渲染
  • 本地图标路径需与最终生成的HTML文件位置对应,若路径错误,可打开浏览器开发者工具查看控制台的404错误来定位问题

完整代码参考

import folium
from folium.plugins import TimestampedGeoJson
import osmnx as ox
import geopandas as gpd

def f(frame):
    xy = frame.xy
    longs = xy[0].tolist()
    lats = xy[1].tolist()
    return [list(z) for z in zip(longs, lats)]

# 初始化地图
portici_gdf = ox.geocode_to_gdf("Portici, Italy")
map = folium.Map(
    location = [portici_gdf.centroid.y, portici_gdf.centroid.x],
    tiles='cartodbpositron',
    zoom_start= 15
)
folium.GeoJson(portici_gdf, style_function= lambda x: {'fillcolor':'blue'}).add_to(map)

# 构造路线数据
lines = [
    {
        'coordinates': f(gdf_f.loc['Piazza San Pasquale']['line']),
        'dates':['2023-03-31T10:00:00']*len(f(gdf_f.loc['Piazza San Pasquale']['line'])),
        'color': 'red',
    },
]

# 构造Feature集合
features = [
    {
        'type': 'Feature',
        'geometry': {
            'type': 'LineString',
            'coordinates': line['coordinates']
        },
        'properties': {
            'times': line['dates'],
            'icon': 'marker',
            'iconstyle': {
                'iconUrl': "./data/test.png",
                'iconSize': [32, 32],
                'iconAnchor': [16, 32]
            },
            'style': {
                'color': line['color'],
            }
        }
    }
    for line in lines
]

# 添加TimestampedGeoJson插件
TimestampedGeoJson(
    {
        'type':'FeatureCollection',
        'features': features,
    },
    period='PT5M',
    add_last_point=False,
).add_to(map)

# 保存地图
map.save('map.html')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:07:51