经纬志
首页 / OpenLayers / API 文档

Projection

先看结论

投影对象。描述一套坐标参考系的标识、单位、有效范围与坐标轴朝向,是所有坐标换算的基准。

最后验证 2026-11-03 · OpenLayers 10.3.1 · 更新 2026-10-27 · 引用本文
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)。