L7 is an open-source, WebGL-powered geospatial data visualization and analysis engine from Ant Group's AntV team, written in TypeScript and aimed at developers who need to render and explore large-scale location data inside web maps, BI dashboards, and GIS-style applications.
What it is
L7 is a browser-side rendering engine for geospatial data. The name encodes its scope: L stands for Location and 7 stands for the seven continents, signalling an intent to provide visual analysis for location data worldwide. It is published under the MIT licence as the npm package @antv/l7, with map integrations shipped separately in @antv/l7-maps. Rendering runs on WebGL, which is what lets it draw large volumes of spatial data in real time and in motion rather than as static images. The project sits inside the AntV visualization ecosystem maintained by the Ant Group data visualization team, alongside sibling tools such as L7Draw, L7Plot, LarkMap, L7VP, and L7Editor, and its source and issue tracker live on GitHub with roughly 4,000 stars, 656 forks, and 216 open issues.
The concrete problem it solves is the gap between raw tabular spatial data and a legible map. Teams that want symbols, paths, filled regions, or heatmaps on a basemap would otherwise have to write their own WebGL rendering layer and a spatial data transformation pipeline. L7 removes both: it accepts CSV, JSON, and GeoJSON directly, or custom formats, without requiring complex spatial data conversion, and it exposes layer construction through a small chained API. The README positions it for common map charts, visual analysis inside BI systems, and application development in GIS, transportation, electric power, land, agriculture, and urban domains.
Key capabilities
- A
Scene object initializes the map canvas, combined with a basemap provider such as Mapbox imported from @antv/l7-maps.
- Layers are built by chaining data-driven visual mappings, for example
new PointLayer().source(data).shape('circle').size('mag', [1, 25]).color('mag', ['#5B8FF9', '#5CCEA1']), so visual variables such as colour, size, texture, direction, and volume carry the data meaning.
- Data ingestion supports CSV, JSON, and GeoJSON, plus user-defined formats, without complex spatial data transformation.
- Point layers cover bubble charts, scatter plots, symbol maps, 3D column maps, aggregation maps, composite chart maps, and custom markers.
- Line layers cover path maps, arcs in 2D and 3D, great-circle routes, and contour lines.
- Polygon layers cover fill maps and 3D fill maps, while heatmaps come in classic, honeycomb, and grid forms, and raster layers handle image and raster data.
- Basemaps are abstracted behind one interface, with Amap used for domestic Chinese compliance and Mapbox for international business, and offline intranet deployment is supported.
Who uses it and how
- Product teams building map charts and visual analysis into BI systems, where the engine handles the rendering while the surrounding application supplies the query layer.
- Spatial information management and analysis systems in GIS, transportation, electric power, land, agriculture, and urban planning, where 2D and 3D views of the same dataset are both required.
- Organizations running international and domestic operations side by side, switching between Mapbox and Amap basemaps without changing the data layer code.
- Deployments on isolated intranets, which the project supports explicitly and which rules out basemap services that require public network access.
- JavaScript and TypeScript front-end developers already working in the AntV ecosystem, who can pair the engine with L7Plot, LarkMap, L7VP, or L7Editor rather than building those layers themselves.
Getting started
Install with npm install @antv/l7, add @antv/l7-maps for basemap support, then construct a Scene with a Mapbox basemap and add layers such as a PointLayer. Documentation, tutorials, and examples are hosted at https://l7.antv.antgroup.com.
How it compares
The facts do not name a set of paid products that L7 substitutes for, so the honest comparison is positional. Mapbox and Amap appear here as basemap providers that L7 consumes rather than as alternatives to it, and the closest named neighbours are the AntV siblings L7Plot, L7Draw, LarkMap, L7VP, and L7Editor, which extend the same ecosystem at different levels of abstraction. Anyone choosing between L7 and another rendering stack is choosing a layer engine, not a map provider.
When to use it — and when not to
L7 is a client-side rendering library, so there is no database, object storage, or SMTP service to operate; the work is bundling it into a front-end build and supplying a basemap. Anyone who needs a server-side geospatial query engine, a tile server, or a no-code mapping product should look elsewhere, because L7 is a rendering and visual-analysis layer, not a data platform. The main frictions visible in the facts are documentation that is Chinese-first with an English translation at ./README.en-US.md, and 216 open issues, so teams without Chinese-language capacity or a tolerance for tracking upstream fixes should weigh that before adopting.
project readme (upstream, from github) — read inline
English | 简体中文
L7
🌍 地理空间数据可视分析引擎

教程 •
文档 •
示例 •
贡献

L7 是由蚂蚁集团 AntV 数据可视化团队推出的基于 WebGL 的开源大规模地理空间数据可视分析引擎。L7 中的 L 代表 Location,7 代表世界七大洲,寓意能为全球位置数据提供可视分析的能力。L7 专注数据可视化化表达,通过颜色、大小、纹理,方向,体积等视觉变量设置实现从数据到信息清晰,有效的表达。
L7 能够满足常见的地图图表,BI 系统的可视化分析、以及 GIS,交通,电力,国土,农业,城市等领域的空间信息管理,分析等应用系统开发需求。
🌟 核心特性
🌏 数据驱动可视化展示
数据驱动,灵活数据映射,从数到形,支持丰富的地图可视化类型,更好洞察数据。
🌏 2D,3D 一体化的海量数据高性能渲染
海量空间数据实时,可交互,动态渲染。
🌏 简单灵活的数据接入
支持 CSV,JSON,GeoJSON 等数据格式接入,可以根据需求自定义数据格式,无需复杂的空间数据转换。
🌏 多地图底图支持,支持离线内网部署
屏蔽不同底图之间的差异,用户只需要关注数据层表达,交互。高德地图国内合法合规的地理底图,Mapbox 满足国际化业务需求。
🌈 支持丰富的图表类型
点图层
- 气泡图
- 散点图
- 符号地图
- 3D 柱状地图
- 聚合地图
- 复合图表地图
- 自定义 Marker
线图层
- 路径地图
- 弧线,支持 2D 弧线、3D 弧线以及大圆航线
- 等值线
面图层
热力图
栅格地图
📦 如何使用
安装
npm install @antv/l7
初始化地图
import { Scene } from '@antv/l7';
import { Mapbox } from '@antv/l7-maps';
const scene = new Scene({
id: 'map',
map: new Mapbox({
style: 'light',
pitch: 0,
center: [107.054293, 35.246265],
zoom: 4.056,
}),
});
添加图层
import { PointLayer } from '@antv/l7';
const pointLayer = new PointLayer()
.source(data)
.shape('circle')
.size('mag', [1, 25])
.color('mag', ['#5B8FF9', '#5CCEA1'])
.style({
opacity: 0.3,
strokeWidth: 1,
});
scene.addLayer(pointLayer);
🔗 周边生态
🤝 参与贡献
如果希望参与到开发中,请遵从我们的贡献指南。

📄 开源协议
该项目的代码和文档基于 MIT license 开源协议。