跳到主要内容

Open Layers注意事项

面积计算精度

绘制多边形区域后,经常会有需要了解多边形面积的需求,常用的方法有

  • geometry.getArea()
  • ol/sphere.getArea()

OpenLayers 原生的 geometry.getArea() 返回的是投影平面面积,在高纬度地区误差显著;推荐始终使用 ol/sphere.getArea() 获取真实球面面积

示例:

// 给交互添加事件:要素绘制完成后
interaction.on("drawend", async (evt: DrawEvent) => {
// 其他动作
const feature = evt.feature; // 获取绘制的特征对象
const geometry = feature.getGeometry(); // 获取几何对象
if (geometry instanceof Polygon) {
// 2026.3.9-warning:这两种面积计算方式,差别很大,后续需要确认一下哪个是正确的
// OpenLayers 原生的 geometry.getArea() 返回的是投影平面面积,在高纬度地区误差显著;推荐始终使用 ol/sphere.getArea() 获取真实球面面积
const area = geometry.getArea(); // 获取面积,单位是平方米(或其他单位,取决于坐标系统的单位)
console.log("Polygon area:", area); // 输出面积
const area2 = getArea(geometry, {
projection: "EPSG:3857" // 或地图使用的投影,如 'EPSG:3857'
// radius: 6371008.8 // 地球平均半径(WGS84 椭球体),单位:米
});
console.log("Polygon area2:", area2);
const coordinates = geometry.getCoordinates(); // 获取坐标数组
console.log("Polygon coordinates:", coordinates); // 输出坐标数组
} else {
console.log("The geometry is not a polygon.");
}
});