Appearance
国内坐标系
这是 GeoVerse 的核心能力:在 OpenLayers 中以"真投影"的方式使用国内偏移坐标系,而不是简单的前端纠偏贴图。
支持的坐标系
| 代号 | 说明 | 对应底图 |
|---|---|---|
GCJ:02 | 国测局加偏墨卡托 | 高德 |
BD:09 | 百度加偏墨卡托 | 百度 |
EPSG:3395 | WGS-84 墨卡托 | 海图(船讯) |
EPSG:3857 / EPSG:4326 | ol 内置 | 天地图等 |
注册时机
投影注册是显式且幂等的:
ts
import { registerProjections } from 'geoverse';
registerProjections(); // 重复调用是 no-opnew 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-84(
setCenter、Marker.position等); - 要素几何内部以视图投影存储,加入 GMap 管理的图层后自动跟随底图切换。