Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
有些城市适合用照片记住,有些城市也适合用路网记住。
一座城市的道路、水域、绿地和街区轮廓,本身就有很强的图案感。如果把普通地图里的导航信息拿掉,只保留这些结构,再配上合适的颜色和排版,就会变成一张可以打印、收藏或做壁纸的城市地图海报。
我做了一个在线工具 MapToPoster Online,用来在浏览器里生成这类城市地图海报。


MapToPoster Online 的使用方式比较直接:打开网页,选择城市,调整地图半径、主题、颜色、字体和导出尺寸,然后下载图片。
它比较适合这些场景:
它不是普通地图截图工具,也不是导航工具。它的重点不是「告诉你怎么走」,而是把城市地图重新渲染成一张更适合展示的图片。


下面是一些生成效果。
使用时,最主要的几个参数是城市、半径、主题、字体和导出比例。
城市决定地图内容,半径决定展示范围。半径太小,可能更像一块街区;半径太大,道路会变密,生成也会更慢。主题和颜色则决定最终海报的气质,比如更适合打印的浅色主题,或者更适合作壁纸的深色主题。
导出尺寸目前覆盖了几个常见用途:A4 适合打印,手机壁纸适合直接保存到手机,桌面 16:9 适合做电脑背景。300 DPI 导出主要是为了照顾打印场景。
字体也可以调整。除了内置字体,也可以上传自己的 TTF/OTF 字体文件,这样城市名和国家名的视觉风格会更接近你想要的海报效果。

MapToPoster Online 默认主要使用 OpenStreetMap 数据,并通过 Overpass API 获取道路、水体、公园和 POI 等地图要素。
生成流程主要在浏览器端完成。数据获取、投影转换和 Rust/WASM 渲染放在 Web Worker / WASM 里处理,已获取过的数据会缓存在浏览器 IndexedDB 中。

这个项目受 maptoposter 这个 Python CLI 项目启发。CLI 工具适合熟悉命令行和本地环境的用户,但对只想快速生成一张图片的人来说,安装环境和运行命令会增加门槛。
网页版的目标是降低这一步的成本:不用安装软件,不用准备 Python 环境,打开网页就可以试。
为了让浏览器端也能处理较大的地图数据,项目使用了 React + TypeScript 做界面,Rust/WASM + tiny-skia 做渲染。对普通使用者来说,不需要关心这些技术细节;它们主要是为了承担地图数据处理和较高分辨率导出的计算压力。
这个工具目前还有一些限制。
首先,大城市、大半径生成时仍然可能比较慢,尤其会受到 Overpass 节点状态影响。公共地图数据源并不总是稳定,项目里做了分块、镜像节点选择和缓存,但不能完全消除这种影响。
其次,不同城市的 OpenStreetMap 数据完整度不同。有些地方的水域、绿地或 POI 数据可能不完整,最终生成效果也会受影响。
另外,它现在更像一个「快速生成地图海报」的工具,不是专业 GIS 软件,也不是完整的设计排版工具。如果你需要非常精细的地图制图控制,它目前还不适合替代专业工具。
如果你喜欢城市地图、旅行纪念、桌面壁纸、打印海报,或者只是想看看一座城市的路网长什么样,可以试试这个工具。
如果你对 OpenStreetMap、浏览器端数据处理、Rust/WASM 渲染感兴趣,也可以看一下源码,项目是 MIT 开源的。也欢迎反馈几个具体问题:
> 关注 少数派小红书,感受精彩数字生活 🍃
> 实用、好用的 正版软件,少数派为你呈现 🚀