概要
近期项目中提出的需求是在面的中心显示这个面的一些信息,信息很容易拿到,但是面的中心坐标计算得费点心思,因为多边形绘制出来是一个不规则的,在查询Cesium文档后,发现了 BoundingSphere 这个类
实现
- 首先要拿到多边形的坐标数组
可以是经纬度的数组,也可以是弧度制的数组
// 位置数组 let poArr = [2.034343, 0.697543, 2.031275, 0.696605, 2.031366, 0.696697]; - 转换成世界坐标
// 弧度转世界坐标(笛卡尔) let res = Cesium.Cartesian3.fromRadiansArray(poArr); // 经纬度转世界坐标(笛卡尔) let res = Cesium.Cartesian3.fromDegreesArray(poArr); - 获取中心点
Cesium.BoundingSphere获得的是一个具有中心和半径的边界球体,或者叫可视范围圆。 两个属性:
center: 圆心 radius: 半径
中心点就是它的圆心
// 通过fromPoints方法获取中心坐标 let center = Cesium.BoundingSphere.fromPoints(res).center;
总结
后期使用时,可以将它封装成一个工具函数,传入坐标,返回中心坐标和半径。 这样使用会更加灵活