trip-map-3d 是做什么的?
将旅行计划转化为网站:一个按区域展示的真实3D地图,每天一条动态路线,带有地点标记、卡片、天气信息和离线支持。所有内容都来自一个文件:trip.yaml。
1. 询问旅行信息
针对缺失的信息,每次提几个问题即可:
- 目的地、时间、以及旅行天数。
- 每天的计划:做什么、按什么顺序。写出地名即可。
- 住宿地点。提前告知用户该网站会发布在免费的GitHub账户上,因此仅需提供街区名称。除非用户坚持,否则不要写出街道地址。
- 语言(
en、pt-BR、es)和单位。 - 可选信息:冲浪点、潮汐、照片、主题。
照片必须为用户本人所有或已获得授权。不要帮用户从互联网下载照片。
2. 编写 trip.yaml
请参考 examples/trip.example.yaml。只有 title、dates.start 和 days 是必需字段。地点名称后务必加上城市名,例如 "Pantheon, Roma",而不是 "Pantheon"。
3. 构建并审查
python -m pip install -r requirements.txt
python -m pipeline check trip.yaml
逐行阅读报告并与用户确认。地理编码器可能会判断错误,因此需要向用户展示每个找到的地点。任何标有 CHECK 的行都需要人工检查。如果某个地点有误或缺失,请在 places: 中添加 lat 和 lon 手动修正,而无需重新搜索。
然后进行构建:
python -m pipeline build trip.yaml --out dist
python -m pip install -r requirements-dev.txt
python tools/check_site.py dist --shots shots --hashes "" dia-1
在确认一切正常之前,请先打开截图仔细查看。确保所有地点都能完整显示,没有路线位于卡片下方,也没有错误信息被打印出来。
4. 仅在用户确认后发布
确认仓库名称及其公开属性。然后:
- 将项目推送到从此模板创建的仓库中。
- 在设置 → Pages 中,将 Source 设置为 GitHub Actions。此步骤需手动完成。
- 每次推送后,工作流会自动构建并发布站点。
规则
- 公共服务是共享的,切勿对其进行循环调用。
trip.lock.json保存了所有请求的答案:请将其提交,且永远不要删除它以重新尝试。 - 本项目不使用公共 Nominatim API。其政策禁止将此类工具用作通用地理编码器。如果用户询问Nominatim,请引导他们查看使用政策,并建议使用
services.geocoder自行搭建实例。 - 免费的 Open-Meteo API 仅限非商业用途。如果是旅行社使用,则需要付费密钥:设置
services.open_meteo_key。 - 请保留网站中的数据版权信息,这是法律要求的(参见
DATA_SOURCES.md)。