如何用 TREK 查看 16 天天气预报:Open-Meteo 集成与历史气候回退完整指南
【免费下载链接】TREKA self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.项目地址: https://gitcode.com/GitHub_Trending/nomad22/TREK
TREK 是一款支持自托管的旅行行程规划器,内置基于 Open-Meteo 的 16 天天气预报功能:无需申请 API 密钥,即可在行程规划器中为每一天查看温度、降水、风力、日出日落等完整天气数据。超出 16 天的日期还会自动回退到历史气候估算,帮你提前数月规划行李清单。本文带你快速上手这套天气预报机制。
在哪里看到 16 天天气预报 🌤️
打开行程规划器(Trip Planner),点击左侧侧边栏中任意一天的标题,即可展开每日详情面板(Day Detail),天气组件就位于面板顶部:
- 🌡️ 天气图标与状态描述
- 当日最高 / 最低温度
- 降水概率与总降水量
- 风速(公制模式下为 km/h,华氏模式下为 mph)
- 日出、日落时间
- 小时级温度条:按 2 小时间隔展示图标和温度,降水概率超过 50% 的时段会高亮提示
同时,侧边栏每一天的行内都有一个迷你天气徽章(图标 + 温度),扫一眼整趟行程的天气走势。
三种日期,三种数据源
TREK 后端会根据"查看日期"与"今天"的距离,智能选择 Open-Meteo 的三个接口,这一逻辑位于server/src/services/weatherService.ts:
| 日期范围 | 数据来源 | 缓存时长 |
|---|---|---|
| 今天 −1 天 ~ 今天 +16 天 | Open-Meteo 预报 API(真实预报) | 1 小时 |
| 1 天以前的历史日期 | Open-Meteo 归档 API(实测历史数据) | 24 小时 |
| 16 天以后的远期日期 | 上一年同月份的气候估算 | 24 小时 |
💡 超过 16 天的日期没有可靠预报,TREK 会取上一年同日期前后各 2 天的归档数据求平均作为气候参考,并在温度前加上Ø 前缀(如 "Ø 18 °C"),明确告诉你这是气候估算而非真实预报。
远期天气如何"自动升级"为真实预报 ⚡
这是 TREK 天气功能最巧妙的设计:
- 你规划下下个月的行程时,侧边栏徽章先展示 Ø 前缀的气候估算;
- 随着日期一天天临近预报窗口,客户端会在后台静默重新拉取数据(见
client/src/components/Weather/WeatherWidget.tsx中type === 'climate'的升级逻辑); - 一旦该日期进入 16 天预报范围,气候估算就自动替换为真实预报,Ø 前缀消失,且无需任何手动操作。
三层缓存:快、稳、省
天气数据走三层缓存,避免重复请求:
- 浏览器会话缓存:侧边栏徽章数据存入
sessionStorage,本次浏览器会话内切换天数不会重复发请求;每日详情面板则每次打开都拉取最新数据 - 服务端内存缓存:按"纬度_经度_日期"生成缓存键,同一地点同一天的数据全用户共享;缓存上限 1000 条,每 5 分钟自动清理过期项
- 并发请求队列:批量加载多天时,前端通过
client/src/services/weatherQueue.ts限制最多 3 个并发请求,防止瞬时打满网络
温度与风速单位随心切换 🌡️
温度单位跟随 Display-Settings 中的显示设置:
- 公制(°C):风速显示 km/h
- 英制(°F):风速显示 mph
切换后所有天气组件即时生效,无需重新加载页面。
相关源码位置速查 🔍
| 模块 | 路径 |
|---|---|
| 天气服务(预报/归档/气候回退核心逻辑) | server/src/services/weatherService.ts |
REST 接口/api/weather与/api/weather/detailed | server/src/nest/weather/weather.controller.ts |
| 前后端共享的天气数据契约(Zod Schema) | shared/src/weather/weather.schema.ts |
| 前端天气组件(含气候→预报静默升级) | client/src/components/Weather/WeatherWidget.tsx |
| 官方天气功能说明 | wiki/Weather-Forecasts.md |
小结
TREK 的天气预报 =16 天真实预报 + 历史实测 + 气候估算三段式数据源,配合 Ø 标识、静默升级和三层缓存,让"提前半年看天气"这件事既准确又克制。自托管部署后所有数据都经过你自己的服务器代理 Open-Meteo,隐私与体验兼得。现在就可以在行程规划器里点开任意一天,看看你的旅途天气吧!🗺️
【免费下载链接】TREKA self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.项目地址: https://gitcode.com/GitHub_Trending/nomad22/TREK
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考