Skip to content

国内坐标系

这是 GeoVerse 的核心能力:在 OpenLayers 中以"真投影"的方式使用国内偏移坐标系,而不是简单的前端纠偏贴图。

支持的坐标系

代号说明对应底图
GCJ:02国测局加偏墨卡托高德
BD:09百度加偏墨卡托百度
EPSG:3395WGS-84 墨卡托海图(船讯)
EPSG:3857 / EPSG:4326ol 内置天地图等

注册时机

投影注册是显式且幂等的:

ts
import { registerProjections } from 'geoverse';

registerProjections(); // 重复调用是 no-op

new GMap() 内部会自动调用;只有当你需要在创建地图之前做坐标转换时才需手动调用。

坐标转换

注册后可直接使用 ol 的转换函数:

ts
import { transform } from 'ol/proj';

const gcj = transform([118.18, 24.49], 'EPSG:4326', 'GCJ:02');
const bd = transform(gcj, 'GCJ:02', 'BD:09'); // 高德 ↔ 百度直转

不依赖 ol 时也可以直接用纯函数(无副作用、可 tree-shake):

ts
import { gcj02, bd09 } from 'geoverse';

const g = gcj02.fromWGS84([118.18, 24.49]); // WGS-84 → GCJ-02 经纬度
const w = bd09.toWGS84([118.19, 24.5]); // BD-09 → WGS-84 经纬度

底图切换与重投影

switchBase 在不同坐标系底图间切换时,会自动切换视图投影,并对已有矢量/热力图层与弹窗做重投影:

ts
map.switchBase('bd-vec'); // 视图投影自动切到 BD:09,已有要素自动转换

约定

  • 公共 API 的经纬度入参/出参一律为 WGS-84setCenterMarker.position 等);
  • 要素几何内部以视图投影存储,加入 GMap 管理的图层后自动跟随底图切换。