经纬志
首页 / OpenLayers / 教程

社区精选资源

先看结论

OpenLayers 的官方示例库本身就是最好的教程,问题往往不在"缺资料",而在"不知道哪个示例对应自己的需求"。 这一页按用途把仓库、示例、插件、投影工具与问答入口排好序,只给链接和一句话说明,不转载正文。 遇到具体问题时先定位类别,再点开对应条目看源码。

最后验证 2026-11-03 · OpenLayers 10.3.1 · 更新 2026-10-29 · 引用本文

先看哪一类

当前的处境直接去哪为什么
要一个能跑的最小地图Quick Start、官方示例库示例都是完整可运行文件,改数据源即可
想系统学一遍而不是零散查官方 Workshop按章节讲概念与组合方式,顺序清楚
已有 Mapbox/MapLibre 的 style.jsonol-mapbox-style直接把样式规范渲染成 OL 图层,不必手写
坐标落点偏了几百米proj4js、epsg.io先确认投影定义,再查数据本身的坐标系
要二三维同一份数据双视图ol-cesium官方维护的 OL 与 Cesium 同步方案

官方仓库与文档

  • openlayers.org:官网首页,给出版本、下载与文档入口。解决的问题:确认当前稳定版号与 CDN 引用路径,避免用到旧版本地址。
  • API 文档:按模块组织的接口参考,类、方法、事件与选项都有说明。解决的问题:查构造参数的确切名称与默认值。
  • 官方示例库:数百个可运行示例,页面右侧可直接查看源码。解决的问题:需要"能跑的最小代码"时,先在这里找同类场景。
  • openlayers/openlayers:源码、issue 与发布记录都在这里。解决的问题:怀疑是库的问题时,查提交历史与已知 issue。
  • 仓库 examples 目录:每个示例的源文件与依赖声明。解决的问题:把示例搬进项目时,确认它额外依赖了哪些包。
  • 官方 Workshop:官方工作坊教材,从基础概念讲到交互与样式。解决的问题:需要按顺序建立整体认识,而不是遇到问题才查一条 API。
  • Workshop · Basics:官方工作坊第一章,从零把一个地图放到网页上。解决的问题:新项目起步时先跑通最小页面,再逐步加图层与交互。
  • 仓库 src 目录:按模块拆分的源码(Map、View、layer、source 等)。解决的问题:想改默认行为或写自定义图层时,先看实现再动手。
  • Releases:带 tag 的版本发布记录。解决的问题:定位某个特性最早出现在哪个版本。
  • ol(npm):发行包,含 ESM 产物与 ol.css。解决的问题:确认版本号、查看包内目录与样式文件路径。
  • API:ol/Map:地图容器类的完整接口。解决的问题:查 setView、addLayer、渲染事件的准确签名。
  • API:ol/style/Style:样式对象与各子样式(填充、描边、文字、图标)。解决的问题:把设计稿还原成样式代码时,逐项对照参数。
  • API:ol/proj:投影注册与坐标转换函数。解决的问题:自定义 EPSG 代号、做坐标互转时查正确入口。
  • Workshop · Vector Data:讲矢量数据源、要素与样式的关系,配练习工程。解决的问题:矢量图层写了不显示、样式不生效时的系统性排查思路。

官方示例:按问题挑

  • 点聚合示例:把大量点按距离聚合,支持缩放时重新计算。解决的问题:上万点位直接渲染卡顿,需要聚合与展开策略。
  • 热力图示例:以地震点数据演示热力图层与权重配置。解决的问题:不想自己写 WebGL,却要表达点位密度分布。
  • 绘制要素示例:Draw、Modify、Snap 三者的标准组合。解决的问题:做编辑器时交互互相打架、吸附不生效。
  • GeoJSON 加载示例:读取 GeoJSON 并做投影转换后上图。解决的问题:数据落位偏移,先判断是投影还是数据本身的问题。
  • OSM 矢量瓦片示例:从开放矢量瓦片服务读取数据并渲染。解决的问题:需要一份可直接用的矢量瓦片数据源来验证样式与交互。
  • Mapbox 矢量瓦片示例:按 Mapbox 瓦片规范读取矢量数据。解决的问题:服务端只提供 Mapbox 格式时的接入方式。
  • WebGL 点过滤示例:用 WebGL 渲染并过滤大量点要素。解决的问题:十万级点需要流畅交互时的渲染方案。
  • 图标缩放示例:图标随分辨率与缩放级别调整尺寸。解决的问题:高分屏下图模糊、图标忽大忽小。

插件与配套库

  • ol-ext:社区扩展库,补充官方没有的控件与交互(遮罩、时间轴、统计图、编辑辅助)。解决的问题:官方示例里找不到的控件需求,先看这里是否已有实现。
  • ol-mapbox-style:把 Mapbox 与 MapLibre 的样式规范渲染为 OL 图层。解决的问题:已有 style.json 想直接复用,避免把样式重写一遍。
  • ol-cesium:OL 与 Cesium 的联动方案,支持二维三维同步切换。解决的问题:同一份业务数据要同时提供平面图与三维球。
  • ol-geocoder:地名搜索控件。解决的问题:需要地址输入框与结果定位,又不想自己接地理编码服务时。
  • ol-contextmenu:右键菜单控件。解决的问题:要在要素或地图上挂上下文操作,而不必手写 DOM 定位。
  • ol-layerswitcher:图层树控件,支持分组与叠加层。解决的问题:图层多到需要分类管理,官方控件不够用时。
  • proj4js:纯 JS 的坐标转换库,OL 的自定义投影依赖它。解决的问题:接入 CGCS2000、地方独立坐标系时需要写投影定义。

投影、数据与工具

  • epsg.io:按 EPSG 代号查投影参数,可直接复制 proj4 字符串。解决的问题:不确定 EPSG:4547 之类的代号该配什么参数时,先在这里核对。
  • geojson.io:在线查看与编辑 GeoJSON,支持点线面手绘与导出。解决的问题:快速核对一份数据落在哪、结构是否正确。
  • Workshop · GeoTIFF 渲染:把 GeoTIFF 转成数据瓦片并渲染,含完整练习。解决的问题:栅格原始文件太大、无法直接上图时的切片与显示方案。
  • API:VectorTile 图层:矢量瓦片图层的样式与渲染选项。解决的问题:矢量瓦片样式不生效、要素层级错乱时逐项核对配置。

社区问答

  • Stack Overflow · openlayers 标签:英文问答存量最大。解决的问题:报错信息、API 用法与构建配置问题。
  • GIS StackExchange · openlayers 标签:偏 GIS 业务层面。解决的问题:投影、瓦片服务、坐标系这类概念性疑问。
  • GitHub Issues:bug 报告与维护者回复。解决的问题:确认某个异常行为是已知缺陷,还是自己的用法有误。
  • r/gis:GIS 综合社区。解决的问题:方案选型、性能对比这类需要经验判断的讨论。

注意事项

  • 自定义 EPSG 代号必须先用 proj4js 注册,否则坐标能显示但落点会偏。
  • 图层顺序用 zIndex 显式控制,不要依赖添加顺序——矢量与栅格混排时结果不稳定。
  • 官方示例库对应的是最新发布版,本地 npm 装的版本更旧时,同名 API 的参数可能不同。

怎么判断一篇教程是否过时

三条线索按顺序看:版本号是否写清(只写 "OpenLayers" 不带 10.x 的按旧文处理); 日期是否为近两年(10.0 之后移除了一批 6.x 时代的老接口); API 是否已废弃,例如仍用 ol.proj.fromLonLat 之外的旧命名空间写法、 或把样式写成已废弃的数组式构造。

版本与发布时间以 npm 上的实际数据为准,别信文章自称:

npm view ol version
npm view ol time.modified
npm ls ol

再看 CHANGELOG 的 Breaking changes 段落,确认文中用到的类或参数是否已被移除。 npm ls ol 能顺带发现依赖树里被间接引入的旧版本——同一个项目里出现两份 ol 时, instanceof 判断会莫名失效,这类问题在旧教程里几乎不会提到。

最省事的验证。把文章里的代码贴进官方示例库对应的示例页面,替换掉原有部分再运行。 能跑通说明至少与 10.3.1 兼容;报 is not a constructor 或图层不显示, 基本可以判定写法过期。

引用本文

经纬志(2026)。《社区精选资源》。https://www.jingweizhi.com/openlayers/tutorial/community-picks.html(访问日期 2026-11-03)。