在线体验: https://maptoposter.0v0.one
GitHub: https://github.com/ianho7/maptoposter-online
这个项目的来源比较简单:之前看到过一个 Python CLI 项目 maptoposter,可以生成城市地图海报,效果挺有意思。但 CLI 对非 Python 用户来说还是有一点点门槛,需要装环境、跑命令、找输出文件。
所以我做了一个网页版,目标是 0 门槛、打开网页后就能选城市、调样式、导出图片。
现在能做什么
一些生成效果:


技术上主要做了什么
前端是 React 19 + TypeScript + Vite + Tailwind CSS 。渲染部分用了 Rust/WASM ,底层是 tiny-skia 。
地图数据默认主要来自 OpenStreetMap ,通过 Overpass API 获取道路、水体、公园和 POI 数据。
比较麻烦的地方是数据量。比如东京 18km 半径的测试数据,道路要素可以到 56 万以上,原始 GeoJSON 大约 40MB 。直接在浏览器里处理这种 GeoJSON ,很容易被 JSON.parse、对象转换、JS 和 WASM 之间的数据传输拖慢。
后面做了几类优化:
因为地图数据量上来以后,普通 JSON 对象流转的成本会非常明显。
目前的不足
先说几个已知问题,免得大家试用时踩坑:
想听听大家的反馈
主要想问几个问题:
在线体验: https://maptoposter.0v0.one
GitHub: https://github.com/ianho7/maptoposter-online
欢迎直接回复,也可以在 GitHub 开 issue ,当然如果能给我一个 Star 就更好了 😊

