首页 / OpenLayers / API 文档
Extent
先看结论
范围。用四个数字描述一块矩形区域,是视图适配、图层裁剪与命中判断的通用入参。
[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)。