GitHub 10.6K Star!这款地图组件突然火了

1,638 阅读5分钟

如果你做过 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。

Dark

Light

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 这种"复制粘贴"的组件模式对你有吸引力吗?评论区聊聊~


各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在前端的海洋里乘风破浪!