Skip to content

坐标系

国内坐标系的注册与数学内核。概念与用法见 指南 · 国内坐标系,本页为 API 速查。

registerProjections

向 OpenLayers 全局投影注册表注册 GCJ:02 / BD:09 / EPSG:3395 及其与 4326/3857 的互转。幂等,重复调用为 no-op。new GMap() 构造时自动调用;仅当需要在创建地图前做坐标转换时才手动调用。

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

registerProjections();
const gcj = transform([118.18, 24.49], 'EPSG:4326', 'GCJ:02');

签名:registerProjections(): void

投影代号常量

常量说明
GCJ02_CODE'GCJ:02'高德加偏墨卡托
BD09_CODE'BD:09'百度加偏墨卡托
EPSG3395_CODE'EPSG:3395'WGS-84 墨卡托(海图)

坐标数学内核(纯函数)

不依赖地图、无副作用、可 tree-shake。

gcj02 / bd09

WGS-84 经纬度 ↔ 加偏经纬度互转:

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

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

每个方法签名:(input: number[], output?: number[], dimension?: number) => number[],支持扁平坐标数组批量转换(dimension 指定每点维度,附加维度原样保留)。

sphericalMercator / baiduMercator

墨卡托正反算(经纬度 ↔ 墨卡托):

ts
sphericalMercator.forward([180, 0]); // → ~[20037508.34, 0]
sphericalMercator.inverse([20037508.34, 0]);
baiduMercator.forward([118.18, 24.49]);
baiduMercator.inverse([...]);

各含 forward / inverse,签名同上(批量扁平数组)。

outOfChina

ts
outOfChina(lon: number, lat: number): boolean

点是否在国境粗框之外(在框外时 GCJ-02/BD-09 不加偏,与 WGS-84 一致)。