下面是一张整理了 Cesium 中常用的克隆方法的表格:
克隆方法 | 描述 |
---|---|
Cesium.Color.clone() | 克隆颜色对象 |
Cesium.Cartesian3.clone() | 克隆三维笛卡尔坐标 |
Cesium.Cartographic.clone() | 克隆地理坐标 |
Cesium.Quaternion.clone() | 克隆四元数 |
Cesium.Matrix3.clone() | 克隆 3x3 矩阵 |
Cesium.Matrix4.clone() | 克隆 4x4 矩阵 |
Cesium.Rectangle.clone() | 克隆矩形区域 |
使用这些克隆方法,你可以对不同类型的对象进行复制,从而保存对象的状态或进行进一步操作,而不会影响原始对象的值。
// 添加3D tiles单体化建筑白膜并点击高亮显示
let tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
url: '.././data/sz/tileset.json'
}));
// 聚焦
viewer.zoomTo(tileset);
// 高亮元素
const hightLighted = {
feautre: undefined,
originalColor: new Cesium.Color(),
}
viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(event) {
// 清除之前的高亮元素
if (Cesium.defined(hightLighted.feature)) {
hightLighted.feature.color = hightLighted.originalColor;
hightLighted.feature = undefined;
}
// 选择新要素
const pickedFeature = viewer.scene.pick(event.position);
if (!Cesium.defined(pickedFeature)) {
return;
}
// 存储选中要素的信息
hightLighted.feature = pickedFeature;
Cesium.Color.clone(
pickedFeature.color,
hightLighted.originalColor
);
// 高亮选中元素
pickedFeature.color = Cesium.Color.YELLOW;
}, Cesium.ScreenSpaceEventType.LEFT_CLICK)