Cesium实战系列文章总目录
:
传送门
1.实现效果
2.实现方法
参考官方沙盒示例:传送门
2.1实现思路
(1)获取选中要素
使用scene
的pick方法
获取选中要素,API:传送门
通常会返回primitive
对象,但选中3D tiles
中的要素将会返回Cesium3DTileFeature
。
(2)高亮选中要素
设置Cesium3DTileFeature
的Color
属性值。API:传送门
2.2具体代码
点击高亮单体建筑模型具体代码如下所示:
// 添加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)