属性详解
description:对象的描述信息
实体对象的描述信息,可以是 html 字符串,在对象信息弹框显示时会用到,Cesium 自带的信息框挂载在 viewer.infoBox 上,类型为 InfoBox ,信息框会在对象被选中时触发。
比如将实体对象的描述信息设置为一个简单的字符串
let viewer = new Cesium.Viewer("cesiumContainer");
viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(112, 40, 100),
point: {
pixelSize: 10,
},
label: {
text: "测试",
},
description: "实体对象的信息",
});描述信息支持 html 字符串内容,可以通过 html 字符串内容,构建对象的表格信息
let viewer = new Cesium.Viewer("cesiumContainer");
viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(112, 40, 100),
point: {
pixelSize: 10,
},
label: {
text: "测试",
},
name: "测试的实体对象",
description: `
<table class="cesium-infoBox-defaultTable">
<tbody>
<tr>
<th>名称</th>
<td>测试的实体对象</td>
</tr>
<tr>
<th>描述</th>
<td>实体对象的描述信息</td>
</tr>
<tr>
<th>创建时间</th>
<td>2024年8月26日</td>
</tr>
</tbody>
</table>
`,
});properties:对象的属性集合
用于存储实体对象的属性信息,如果您了解 GeoJson 数据格式,您会比较容易理解,因为一个 GeoJson 对象就包括一个 geometry 几何信息和一个 properties 属性信息。实体对象的 properties 会被包装复杂的对象,在获取对应的信息时,需要通过对应的方法进行获取
let viewer = new Cesium.Viewer("cesiumContainer");
let entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(112, 40, 100),
point: {
pixelSize: 10,
},
label: {
text: "测试",
},
name: "测试的实体对象",
properties: {
name: "对象名称",
description: "对象描述",
},
});
console.log(entity);
console.log(entity.properties.getValue("name"));
availability:对象的可用性(有效性)
用于将实体对象与时间进行绑定,实体在那个时间范围内有效,在有效时间范围外实体不会被渲染出来,需要结合时间轴来使用。
let viewer = new Cesium.Viewer("cesiumContainer", {
shouldAnimate: true,
});
const start = Cesium.JulianDate.fromDate(new Date(2015, 2, 25, 16));
const stop = Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate());
//设置时间轴的起始时间
viewer.clock.startTime = start.clone();
viewer.clock.stopTime = stop.clone();
viewer.clock.currentTime = start.clone();
viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP; //时间循环
viewer.clock.multiplier = 100; //10为正常时间 这里快进10倍
viewer.timeline.zoomTo(start, stop);
let entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(112, 40, 100),
point: {
pixelSize: 10,
},
label: {
text: "测试",
},
name: "测试的实体对象",
properties: {
name: "对象名称",
description: "对象描述",
},
//时间轴上的时间总共360秒
availability: new Cesium.TimeIntervalCollection([
//第 0 - 100秒可用
new Cesium.TimeInterval({
start: start,
stop: Cesium.JulianDate.addSeconds(start, 100, new Cesium.JulianDate()),
}),
//第 300 - 360秒可用 也就是第 100 - 300秒的区间不可用
new Cesium.TimeInterval({
start: Cesium.JulianDate.addSeconds(start, 300, new Cesium.JulianDate()),
stop: Cesium.JulianDate.addSeconds(start, 360, new Cesium.JulianDate()),
}),
]),
});position:对象的位置(世界坐标)
为实体对象所关联的图形提供位置信息,比如 piont、billboard、model 等图形需要通过该属性来设置正确的地理位置。
let entity = viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(112, 40, 100),
point: {
pixelSize: 10,
},
label: {
text: "测试",
},
});orientation:对象的方向(姿态)
为实体对象所关联的图形提供方向信息,主要是 model 图形,比如加载一个模型,如果不指定方向,那么该模型默认指向正东
let viewer = new Cesium.Viewer("cesiumContainer");
viewer.entities.add({
position: Cesium.Cartesian3.fromDegrees(112, 40, 100),
model: {
uri: "/assets/models/CesiumAir/Cesium_Air.glb",
scale: 10,
},
});可以通过 orientation 设置其方向指向正北,orientation 属性类型为 Quaternion 即四元素,四元素不太好理解,我们一般通过 Transforms 类将熟悉的 HeadingPitchRoll 转换为四元素。
viewFrom:锁定对象时的相机偏移量
设置 viewer.trackedEntity 时,相机与目标的偏移量,类似相机一章中说的的 camera.setView() 时 orientation 设置 Cartesian3 对象的情况。以下代码展示设置 viewFrom 和没有设置 viewFrom 时,设置 viewer.trackedEntity 的区别。
parent:对象关联的父级 Entity
与此实体关联的父级实体,设置父实体的状态时,可能会影响此实体,比如设置父级实体不可见,那么该实体也不可见