cesium-Cesium.Rectangle.fromCartesianArray

文章介绍了如何使用Cesium库中的Rectangle类来计算和绘制三维空间中的矩形,包括确定边界、创建顶点、计算长度以及转换为经纬度表示。
摘要由CSDN通过智能技术生成

在绘制矩形的时候,确定对角两点就可画出矩形,根据这两点可以计算出相应的其他两点的坐标

定义三角点集合

var points = [
    new Cesium.Cartesian3(0, 0, 0), // 第一个顶点
    new Cesium.Cartesian3(10, 0, 0), // 第二个顶点
    new Cesium.Cartesian3(5, 5, 0)   // 第三个顶点
];

调用 Rectangle.fromCartesianArray() 函数计算矩形边界

var rectangle = Cesium.Rectangle.fromCartesianArray(points);

输出结果

console.log("矩形左上角经度:" + rectangle.west);
console.log("矩形右下角经度:" + rectangle.east);
console.log("矩形左上角纬度:" + rectangle.north);
console.log("矩形右下角纬度:" + rectangle.south);

创建四个顶点的位置

var A = Cesium.Cartesian3.fromDegrees(lon1, lat1); // 左上角经纬度
var B = Cesium.Cartesian3.fromDegrees(lon2, lat1); // 右上角经纬度
var C = Cesium.Cartesian3.fromDegrees(lon2, lat2); // 右下角经纬度
var D = Cesium.Cartesian3.fromDegrees(lon1, lat2); // 左下角经纬度

计算AB、BC、CD、DA的长度

var lengthAB = Cesium.Cartesian3.distance(A, B);
var lengthBC = Cesium.Cartesian3.distance(B, C);
var lengthCD = Cesium.Cartesian3.distance(C, D);
var lengthDA = Cesium.Cartesian3.distance(D, A);

计算矩形的长度

var rectangleLength = (lengthAB + lengthBC + lengthCD) / 2;
console.log("矩形的长度为:" + rectangleLength);

绘制矩形

const rectangleHand = Cesium.Rectangle.fromCartesianArray(clickPoint)
viewer.entities.add({
    name: 'drawRectangle',
    rectangle: {
        coordinates: rectangleHand,
        material: Cesium.Color.fromCssColorString("rgba(25, 98, 134, 0.5)"),
    },
});

删除移动矩形

removeEntityByName('moveDrawRectangle')
const northwest = Cesium.Rectangle.northwest(rectangleHand);//西北角弧度坐标(左上)
const southwest = Cesium.Rectangle.southwest(rectangleHand);//西南角弧度坐标(左下)
const northeast = Cesium.Rectangle.northeast(rectangleHand);//东北角弧度坐标(右上)
const southeast = Cesium.Rectangle.southeast(rectangleHand);//东南角弧度坐标(右下)

转换为经纬度

const leftTop = [Cesium.Math.toDegrees(northwest.longitude), Cesium.Math.toDegrees(northwest.latitude)];//左上角经度
const leftBottom = [Cesium.Math.toDegrees(southwest.longitude), Cesium.Math.toDegrees(southwest.latitude)];//左下角经度
const rightTop = [Cesium.Math.toDegrees(northeast.longitude), Cesium.Math.toDegrees(northeast.latitude)];//右上角经度
const rightBottom = [Cesium.Math.toDegrees(southeast.longitude), Cesium.Math.toDegrees(southeast.latitude)];//右下角经度
var polygon = turf.polygon([[
    leftTop, rightTop, rightBottom, leftBottom, leftTop
]]);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值