首页 / OpenLayers / API 文档
Projection
先看结论
投影对象。描述一套坐标参考系的标识、单位、有效范围与坐标轴朝向,是所有坐标换算的基准。
new ol.proj.Projection(options)
构造参数
| 参数 | 说明 |
|---|---|
code | 投影标识,如 'EPSG:3857',必填 |
units | 坐标单位,默认 'm' |
extent | 投影坐标系下的有效范围 [minX, minY, maxX, maxY] |
axisOrientation | 坐标轴朝向,默认 'enu'(东、北、上) |
global | 是否为全球范围投影,默认 false |
metersPerUnit | 每单位对应的米数,省略时按 units 推算 |
worldExtent | 经纬度意义下的世界范围,供换算使用 |
常用方法
| 方法 | 返回 | 说明 |
|---|---|---|
getCode() | string | 取投影标识 |
getUnits() | string | 取坐标单位 |
getExtent() | Extent | 取有效范围,未设置时为 undefined |
setExtent(extent) | void | 设置有效范围 |
getWorldExtent() | Extent | 取经纬度世界范围 |
getMetersPerUnit() | number | 取每单位米数 |
getAxisOrientation() | string | 取坐标轴朝向 |
isGlobal() | boolean | 是否全球投影 |
var mercator = ol.proj.get('EPSG:3857');
console.log(mercator.getCode(), mercator.getUnits()); // EPSG:3857 m
var local = new ol.proj.Projection({
code: 'EPSG:4490',
units: 'degrees',
extent: [73.0, 3.0, 136.0, 54.0],
global: false
});
ol.proj.addProjection(local);
var xy = ol.proj.transform([116.391263, 39.907359], 'EPSG:4326', 'EPSG:3857');
console.log(xy); // 墨卡托米制坐标,量级为千万与百万
注意事项
- 自定义投影必须先
ol.proj.addProjection注册,否则ol.proj.get取到的是 null。 extent用投影后的坐标填,不是经纬度;经纬度范围请放到worldExtent。- 视图投影与数据源投影不同时,OpenLayers 会逐瓦片重投影,缩放层级越高开销越大。底图与视图用同一投影能省掉这一步。
ol.proj.transform只做一次坐标换算,就地返回新数组,不修改入参。
经纬志(2026)。《Projection》。https://www.jingweizhi.com/openlayers/api/projection.html(访问日期 2026-11-03)。