如果你做过 Web 地图开发,一定踩过这些坑。
想做一个漂亮一点的地图?先装地图 SDK。
然后研究:Mapbox、 MapLibre、 Leaflet、 OpenLayers
最后发现:真正难的不是地图,而是 UI。
按钮不好看、缩放控件太丑、图层切换太原始、Marker 样式全靠自己写、主题切换还要重做一遍。
很多开发者调侃:地图功能 30 分钟,UI 美化 3 天。
而就在最近,Cloudflare 一位设计工程师开源了一个项目,让很多前端开发者眼前一亮——mapcn
它不是新的地图引擎,而是一套专门为 MapLibre 打造的现代地图组件库。
最关键的是:它的设计理念,几乎就是地图版 shadcn/ui。
mapcn 到底是什么?
第一次看到名字,很多人都会以为:
又一个地图 SDK?
其实不是。
官方定位非常明确:一个开箱即用、可定制的 MapLibre UI 组件库。
简单理解就是:
MapLibre
+
Tailwind CSS
+
现代 UI
=
mapcn
它不会替代 MapLibre。
而是在 MapLibre 之上。
提供一套真正现代化的地图组件。
为什么它一发布就火了?
原因其实很简单。
如果你用过:
shadcn/ui
你会发现:它最大的成功,并不是按钮做得漂亮。
而是: 组件源码直接给你。
开发者可以:
- 自己改样式
- 自己改交互
- 自己扩展功能
而不是:
npm install
↓
黑盒组件
↓
无法修改
mapcn 完全继承了这种思路。
官网直接写着:Copy、Paste、Customize。
没有复杂配置、没有封闭组件,就是把源码放进你的项目,想怎么改就怎么改。
真正解决的是地图 UI 的问题
过去做地图项目。
大家通常这样写:
MapLibre
↓
自己写 Toolbar
自己写 Layer Switcher
自己写 Compass
自己写 Marker
自己写 Popup
大量时间,其实都花在重复造轮子。
而 mapcn 已经把这些常用能力准备好了。
例如:
- Zoom Controls
- Compass
- Marker
- Popup
- Layer Switcher
- Geolocation
- Theme Toggle
等等。
很多地图后台,几乎拿来就能用。
它的风格真的很像 shadcn/ui
第一次打开官网,很多人都会产生一种熟悉感。
为什么?因为整个设计思路几乎一致。
都是:
Tailwind CSS
+
Radix 风格
+
源码可复制
组件不是封装好的 npm 黑盒。
而是:
复制源码
↓
放进项目
↓
自由修改
这也是现在越来越流行的一种开发方式。
基于 MapLibre,而不是 Google Maps
很多人第一次看到地图组件,都会想到:Google Maps。
但 mapcn 选择的是:MapLibre
为什么?因为 MapLibre 已经成为近年来最活跃的开源地图生态之一。
相比很多商业地图方案。
它:
- 开源
- 无厂商绑定
- 社区活跃
- 支持矢量地图
很多现代地图项目,都开始选择 MapLibre 作为底层引擎。而 mapcn 正是在此基础上,补齐了 UI 层。
Tailwind 用户几乎零学习成本
如果你的项目已经在使用:
Tailwind CSS
那么 mapcn 会非常顺手,所有组件都遵循 Tailwind 的开发方式。
例如:颜色、间距、圆角、阴影、主题
全部都是熟悉的 Tailwind 配置。
不需要重新学习一套新的样式系统。
支持深色模式
现代后台,几乎都需要:
Light
Dark
双主题。
mapcn 直接提供了主题能力。
地图控件也能保持统一风格。
不用再为了 Dark Mode:
重新写一套 CSS。
TypeScript 体验也非常舒服
整个项目使用:TypeScript 开发。
组件都有完善类型提示。
如果你本身就是:React + TypeScript 开发者。
基本没有额外学习成本。
开始使用只需要几步
安装依赖:
pnpm add maplibre-gl
然后按照官网方式初始化 mapcn。
创建地图后。
直接引入需要的组件即可。
例如:
<Map>
<ZoomControl />
<CompassControl />
<ThemeToggle />
</Map>
整个开发体验。
非常接近:
shadcn/ui
↓
复制组件
↓
直接使用
它适合哪些项目?
如果你正在开发:
- 企业后台地图
- 数据可视化平台
- GIS 系统
- 物流系统
- 轨迹管理平台
- IoT 可视化
- 运维监控平台
mapcn 都非常值得尝试,因为很多地图项目,真正耗时间的,不是地图本身,而是:各种控制面板、各种交互按钮、各种主题适配。mapcn 恰好把这些全部做好了。
为什么越来越多人喜欢这种模式?
过去几年。
前端组件的发展经历了三个阶段:
UI Framework
↓
Component Library
↓
Copy & Paste Components
代表项目分别是:
Ant Design
↓
Material UI
↓
shadcn/ui
现在,地图领域,似乎也开始出现同样的趋势。
不是提供一个庞大的 SDK,而是:提供一套真正可以自由修改的组件,这也是 mapcn 最吸引人的地方。
快速上手
安装 MapLibre:
pnpm add maplibre-gl
安装并初始化 mapcn(按官网步骤):
npx mapcn@latest init
添加组件:
npx mapcn@latest add zoom-control
npx mapcn@latest add compass-control
npx mapcn@latest add theme-toggle
运行项目后,即可获得一套现代化、支持 Tailwind 定制的地图 UI。
最后
过去几年,地图开发工具越来越成熟。
真正困扰开发者的,已经不是:地图能不能显示。
而是:地图能不能做得足够漂亮。
mapcn 没有重新发明地图,它只是把地图组件,重新按照现代前端开发方式,做了一遍。
对于已经使用:React、Tailwind CSS、MapLibre的团队来说,几乎可以无缝接入。
如果你正在寻找一套现代化、可定制、开箱即用的地图组件库,那么 mapcn 值得收藏。
官网: www.mapcn.dev/
GitHub: github.com/AnmolSaini1…
你做过 Web 地图开发吗?被 UI 美化折磨过吗?mapcn 这种"复制粘贴"的组件模式对你有吸引力吗?评论区聊聊~
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在前端的海洋里乘风破浪!