Skip to content

引擎选型(OpenLayers / MapLibre)

GeoVerse 的基础层是两个相互独立的核心包,共享同一套 API 心智,按渲染引擎二选一:

核心包渲染引擎UMD 全局名peerDependency
@geoverse/core-olOpenLayers 10+GeoVerseol
@geoverse/core-libreMapLibre GL JS 5GeoVerseLibremaplibre-gl

两者导出同名的核心类GMap / Marker / Circle / Polygon / Polyline / GVectorLayer / InfoWindow …),构造参数与方法尽量对齐,使用者侧坐标契约一律 WGS-84 经纬度。换引擎主要是换 import 与底图代号,业务写法基本不变。

想用一套 API 在两引擎间运行时切换,而非各自直接用核心包?见统一门面 geoverse——createMap({ engine }) + geoverse/olgeoverse/libre 子路径。

ℹ️ 包名变更:OpenLayers 核心原名 geoverse,现为 @geoverse/core-olgeoverse 包名现由统一门面占用。

共同点

  • 国内坐标系无偏移:高德 GCJ-02、天地图(CGCS2000≈WGS-84)开箱即用。
  • WGS-84 统一契约:要素、相机、事件、弹窗的经纬度入/出参全为 WGS-84,内部自动按底图基准面变换。
  • ESM 优先 + 混淆 UMD 双轨交付、完整 d.ts、SSR 安全(模块顶层零副作用)。
  • 要素编辑通过同一个引擎无关的 @geoverse/editor-core 接入(OL 用 editor-ol,MapLibre 用 editor-libre)。
  • 框架组件 @geoverse/vue / @geoverse/react 目前封装 OpenLayers 核心。

差异速查

维度OpenLayers 版 @geoverse/core-olMapLibre 版 @geoverse/core-libre
渲染Canvas 2D(栅格/矢量)WebGL(GPU,矢量切片、倾斜/旋转)
自定义投影✅ 可注册 GCJ-02 / BD-09 / EPSG:3395 等并重投影瓦片❌ 仅 Web Mercator;以「数据边界变换」对齐国内坐标
百度 BD-09✅ 原生瓦片源开箱即用🧪 瓦片纠偏 warp + 同源代理(无 CORS/防盗链)
栅格服务✅ 丰富:XYZ / WMS / WMTS / ArcGIS / 超图 iServerXYZ 栅格 + 矢量切片(vector tiles)
矢量切片底图一般(需扩展)✅ 原生强项(OpenFreeMap 等免 key style)
内置图层种类热力 / 海量点 / 聚合 / 路况 / 自定义底图 / ECharts…矢量要素 / 矢量切片(MVP 范围,其余延后)
交互工具测量 / 绘制 / 鹰眼 / 轨迹回放等内置以编辑器三包提供编辑;测量/绘制延后
框架组件✅ Vue / React 官方绑定暂无(可直接用核心类)

该选哪个

选 OpenLayers 版 @geoverse/core-ol —— 当你需要:

  • 开箱即用的百度底图(不想自建瓦片代理);
  • 丰富的栅格服务(WMS/WMTS/ArcGIS/超图)或自定义投影/瓦片网格
  • 内置的热力/海量点/聚合/路况/轨迹回放等业务图层与交互;
  • 现成的 Vue / React 组件;或已有大量 OpenLayers 代码。

选 MapLibre 版 @geoverse/core-libre —— 当你需要:

  • 矢量切片底图、WebGL 渲染、3D/倾斜/旋转,或要接 MapLibre 生态插件;
  • 数据以 WGS-84 为主,叠加标准底图或高德(GCJ-02)/天地图国内底图;
  • 更轻的渲染管线与 GPU 大数据量表现。

能否共存

两包互不依赖、可同时安装(各自的核心类不冲突,引擎实例独立)。常见做法是按页面/模块选用其一;除非有特殊需求,同一张地图只用一个引擎

下一步