经纬志
首页 / OpenLayers / API 文档

Extent

先看结论

范围。用四个数字描述一块矩形区域,是视图适配、图层裁剪与命中判断的通用入参。

最后验证 2026-11-03 · OpenLayers 10.3.1 · 更新 2026-10-27 · 引用本文
[minX, minY, maxX, maxY]

ol.Extent 是普通数组而非类,没有构造函数。 生成与计算都通过 ol.extent 模块下的函数完成,坐标顺序固定为左下右上。

四个分量

下标含义
[0]最小 X,西边界或左边界
[1]最小 Y,南边界或下边界
[2]最大 X,东边界或右边界
[3]最大 Y,北边界或上边界

常用函数

函数返回说明
ol.extent.createEmpty()Extent创建空范围,四点值为正负无穷
ol.extent.boundingExtent(coords)Extent由坐标数组求外接矩形
ol.extent.getCenter(extent)Coordinate取中心点
ol.extent.getWidth(extent)number取宽度
ol.extent.getHeight(extent)number取高度
ol.extent.getTopLeft(extent)Coordinate取左上角
ol.extent.getBottomRight(extent)Coordinate取右下角
ol.extent.containsCoordinate(e, coord)boolean点是否落在范围内
ol.extent.intersects(e1, e2)boolean两范围是否相交
ol.extent.extend(e1, e2)Extent把 e2 并入 e1 并返回 e1
ol.extent.buffer(extent, value)Extent按地图单位向外扩张
ol.extent.applyTransform(e, fn)Extent对四点做坐标变换
ol.extent.isEmpty(extent)boolean判断空范围
ol.extent.equals(e1, e2)boolean逐分量比较是否相同
var extent = ol.extent.boundingExtent([
  ol.proj.fromLonLat([116.20, 39.80]),
  ol.proj.fromLonLat([116.55, 40.05])
]);

console.log(ol.extent.getCenter(extent));
console.log(Math.round(ol.extent.getWidth(extent)), 'm');

map.getView().fit(extent, {
  padding: [24, 24, 24, 24],
  maxZoom: 15,
  duration: 600
});

// 换投影后再用
var wgs84 = ol.proj.transformExtent(extent, 'EPSG:3857', 'EPSG:4326');

注意事项

  • 顺序固定为 minX, minY, maxX, maxY,写成 [x, y, width, height] 是最常见的错误来源。
  • 数据范围与视图投影不一致时先 ol.proj.transformExtent 再传给 view.fit,否则定位到错误区域。
  • view.fit 不限制最大缩放,范围很小时会放大到极限,加 maxZoom 才能保持合理层级。
  • extend 直接修改第一个参数并返回它,需要保留原值时先 ol.extent.clone。
引用本文

经纬志(2026)。《Extent》。https://www.jingweizhi.com/openlayers/api/extent.html(访问日期 2026-11-03)。