时间隔的有点久了可能写出来会有点粗糙。本来是想抽时间整理一下mapbox做过的特效,后来项目太忙了就搁置了,之前看到一个网友问根据一个点去画矩形,我就浅写一下。我也是一个新手小白,可能写的时候思路混乱或者说是走了一些弯路,欢迎指正。有需要的也可以加我QQ:469046646
我的思路
1.建立一个右手坐标系
2.确定要画多大范围的长方形,并且计算
3.添加
//主体
let center =Cesium.Cartesian3.fromDegrees(eval(lng.value),eval(lat.value), 0);
//局部坐标系 右手坐标系
//x->东
//y->上
//z->南
let L2W = Cesium.Transforms.localFrameToFixedFrameGenerator('east', 'up')(center);//中心点
let range = CreateRange(L2W);
//添加Entity
viewer.entities.add({
id:"ShowRange",
name: "选取范围",
polygon: {
hierarchy: range,
material: Cesium.Color.fromCssColorString("rgba(5, 39, 175, 0.3)").withAlpha(0.3),
},
});
/
//函数
//获取长方形的四个顶点
const CreateRange = (L2W)=>{
let LT = computedposition(L2W,-6500,0,-3500) ;
let LB = computedposition(L2W,-6500,0,3500) ;
let RT = computedposition(L2W,6500,0,-3500) ;
let RB = computedposition(L2W,6500,0,3500) ;
return [LT,LB,RB,RT]
}
//计算点位
const computedposition =(L2W,x,y,z)=>{
let temp = Cesium.Matrix4.multiplyByPoint(L2W,Cesium.Cartesian3.fromElements(x,y,z),new Cesium.Cartesian3())
return temp
}
大概就是这样,希望可以帮到你们