
在线预览 :fanhuayishiy.github.io/ai-demo/san...
开源地址 :github.com/fanhuayishi... (MIT,合集仓库,本项目在 sanfang-qixiang-atlas/ 目录)
这个项目的提示词短得有点过分:「根据网上的地图,实现一个3D的三坊七巷旅游全景图,要求可以交互、滚轮缩放,点击某个地点后,可以自动飞过去。」 成品是把福州三坊七巷按真实地图铺在浏览器里:901 个建筑平面轮廓、107 段道路、294 个庭院内孔来自保存下来的 OpenStreetMap 快照,白墙黛瓦是风格化建模,不是摄影全景,也不是测绘级实景。

能玩什么
- 左键拖拽旋转、右键平移、滚轮缩放,移动端单指旋转双指缩放;点地图上的景点标签或左侧目录,镜头平滑飞到那一处,右侧弹出介绍。
- 搜索框按名称、街巷、地址或介绍内容找,另有名人故居、文化古迹、街巷三档筛选。
- 3D 与「俯瞰」一键互切,工具栏还有朝北、放大缩小、恢复全景、景点标签显隐和日夜切换;键盘是方向键平移、+ / − 缩放、Home 恢复全景、/ 聚焦搜索、Esc 关详情。
- 「开始漫游」是五站空中漫游,每站停留 10 秒,可以暂停、跳下一站或结束;直接拖动地图会自动暂停。
- 详情里的实景照片点开能放大到 400%,放大之后还能拖动。
- 顶栏分全景导览、漫游路线、关于坊巷三块,路线那栏写着建议 1--2 小时、5 处文化地标;页脚的「数据来源」点开是许可与出处。
几处值得放大看的地方
- 街巷不是画出来的:街区原点 119.2916, 26.085,x 向东、z 向南、单位是米,建筑轮廓直接来自 OSM 快照。
- 20 个导览地点每个带来源和精度标识。小黄楼、二梅书屋、光禄吟台用的是街段附近的近似位置,界面上老老实实打了「位置示意」标签;虚线只表示参观顺序,不做实地步行导航。
- 20 个地点的详情都配了 Wikimedia Commons 的实景照片,摄影者与许可逐条列出------照片是 CC BY-SA,不在代码的 MIT 范围内。
- 南后街那棵爱心树是独立模型:心形双叶树冠、分叉树干、板根与气根,点标签能飞到近景,树位同样是街段示意定位。
- 运行时不依赖第三方地图 API、在线字体或密钥,地图数据、程序生成的材质和图标都随项目打包。
- 适配桌面、手机竖屏和低高度横屏,也尊重系统的减少动画偏好。
- 建筑高度、屋顶形式与装饰不是测绘数据;另有一份和 Overture Buildings 的布局比对,1117 个 Polygon 里 216 个是补充轮廓,未经实地测绘核实。

技术栈
Three.js 0.180 加 Vite 6,ES modules 手写,没有框架。数据是 public/data/map.geojson 与 places.json,原始 OSM 数据由 prepare_map.py 转过来。
本地跑起来
bash
git clone https://github.com/fanhuayishiy/ai-demo.git
cd ai-demo/sanfang-qixiang-atlas
npm install # 需要 Node.js 20.19+ 或 22.12+
npm run dev # 本地地址以终端输出为准,端口被占用会自动顺延
关于「根据网上的地图」
这句模糊要求最后落到了一份 sources.md:数据快照、坐标精度、每个地点的出处、照片作者与许可分开记。想知道哪条信息是从哪来的,那份文档比正文有用。

关于这个合集
同一个仓库里还有一批 AI 辅助生成的交互式前端作品,全部 MIT 开源、全部带在线预览:可探索的家庭 3D 空间、日式街角便利店微缩沙盘、体素微缩建筑工地沙盘、体素深夜拉面摊、波音 787-9 结构数字孪生大屏、热泵洗烘一体机 3D 爆炸拆解、实时 3D 幼儿园、含氢综合能源数字孪生、夕空飞行......
觉得有点意思,可以点个 Star:github.com/fanhuayishi...