谷歌时间线可视化工具
mahlernim/google-timeline-visualizer
访问 GitHub ↗
一句话简介
基于 Kotlin 开发的谷歌位置时间线数据可视化工具,可解析并直观展示用户的地理位置历史记录。
标签
适用应用场景
- 解析并可视化个人谷歌位置历史
- 分析出行轨迹与常去地点
- 导出时间线数据进行二次分析
- 学习 Kotlin 与地图可视化开发
README 中文摘要
项目概述
Timeline Visualizer 是一款将 Google Maps 导出的时间线(Timeline)文件转换为可分享的旅行动画视频的工具,支持 Android 应用与 iPhone 网页版,以及 Python 桌面版本。项目主打本地化处理:时间线数据全程不上传,视频渲染在设备端完成,仅地图瓦片会向 CARTO 发起网络请求。
核心功能
- 时间线可视化:将
Timeline.json中的坐标、路径、出行方式与停留点渲染为带动画标记的移动地图。 - 灵活的日期选择:支持按月份范围或精确日期筛选,范围可跨越年份,最新完整年份为默认起点。
- 多档输出规格:提供正方形 480p、720p、1080p,以及竖屏 1080×1920 与横屏 1920×1080 五种预设。
- 可配置相机运动:固定相机保持单一缩放层级,动态相机则更紧密地跟随局部移动。
- 长行程压缩:仅改变动画节奏,不改动路线几何形状,使长途行程渲染更高效。
- GPS 异常过滤:默认采用保守过滤策略,忽略孤立的异常往返坐标,并在报告中标注忽略数量。
- 大圆插值:长距离飞行等稀疏路线沿大圆路径插值,避免镜头跳跃。
技术架构
- Android 端使用原生开发(Kotlin/Java),最低支持 Android 8.0(API 26)。
- 构建依赖:JDK 17、Android SDK Platform 36、Build Tools 36.0.0,使用 Gradle 任务完成测试、Lint 与打包。
- 视频编码依赖设备硬件 H.264 支持;iPhone 网页版要求 Safari 16.4 及以上。
- 桌面 Python 版本基于 FFmpeg + MoviePy 等依赖(见
requirements.txt),支持命令行参数配置。
关键 CLI 用法
桌面版提供 visualizer.py 主入口,常用参数如下:
# 指定年份、稳定相机、长行程压缩,输出 mp4
python visualizer.py --input Timeline.json --year 2025 \
--camera-movement steady --long-trip-compression balanced \
--output my_trip_2025.mp4
构建与测试:
./gradlew test lint assembleGithubDebug assemblePlayDebug
python -m pip install -r requirements-dev.txt
python -m pytest
工作流程(移动端)
- 在手机设置或 Google Maps 中导出
Timeline.json。 - 应用内选择文件,按月份范围或精确日期筛选。
- 设置命名模板(支持
{year}与{name}占位符)和时长(10–300 秒)。 - 预览动画地图,确认效果后生成视频。
- Android 10 及以上自动保存至
Movies/Timeline Visualizer,更低版本调用系统「另存为」对话框。
视频完成后自动加入「我的视频」库,包含缩略图、时间段、时长与创建日期等元数据,并提供分享、外置播放器回退等快捷操作。
支持的导出格式
- 当前 Android/iOS 直数组格式
- 旧的
semanticSegments结构 - 可选的原始定位回退(含本地降噪与提示)
- 路径、活动与访问三类记录
- 字符串、
latLng、度数值、geo:URI 与 E7 整数编码 - 跨越国际日期变更线的路线
隐私与安全
- 不集成 Google 登录、定位权限、统计分析或宽泛存储权限。
- 仅读取用户主动选择的 JSON 与视频文件。
- 第一次加载时间线前显示底图数据流向说明并允许取消。
- 默认视频标题使用用户可编辑的手机名称,无需账号授权。
多语言与开源
应用支持英语、韩语、日语、简体中文、繁体中文、西班牙语、法语、德语、巴西葡萄牙语九种语言。地图归属信息(OpenStreetMap 与 CARTO)会在每个预览与导出的视频中显示。项目以 MIT 许可证开源。
摘要更新于 2026-08-22 00:30:30
· 原文 10336 字符
· md5 b4b8fea4089b…