能否通过HTML元素(如按钮)选中Cesium Viewer内的Cesium实体?
可以通过HTML元素选中Cesium实体
当然可以通过HTML按钮这类元素选中Cesium Viewer上的实体,完全不用局限于Viewer自带的交互操作。
实现思路
核心是利用Cesium提供的selectedEntity或selectedEntities API,手动将目标实体设置为选中状态,和Viewer原生选中逻辑完全一致。
代码示例
- 先创建一个测试实体
const viewer = new Cesium.Viewer('cesiumContainer'); // 创建目标实体 const testEntity = viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), point: { pixelSize: 12, color: Cesium.Color.RED }, name: '测试标记点' });
- 添加HTML按钮并绑定点击事件
<button id="selectBtn">选中测试实体</button> <button id="deselectBtn">取消选中</button>
// 选中实体 document.getElementById('selectBtn').addEventListener('click', () => { viewer.selectedEntity = testEntity; // 可选:自动将视角聚焦到实体 viewer.zoomTo(testEntity); }); // 取消选中 document.getElementById('deselectBtn').addEventListener('click', () => { viewer.selectedEntity = undefined; });
多选场景处理
如果需要选中多个实体,使用selectedEntities集合:
// 添加选中项 viewer.selectedEntities.add(testEntity); // 移除单个选中项 viewer.selectedEntities.remove(testEntity); // 清空所有选中 viewer.selectedEntities.removeAll();
选中后,Cesium会自动应用默认的选中样式(比如实体高亮、信息框弹出,只要你开启了对应功能),效果和直接点击Viewer中的实体完全一致。
内容的提问来源于stack exchange,提问作者user15180012
相关产品推荐
相关产品推荐

