Select 铯:选择点时触发事件

Select 铯:选择点时触发事件,select,event-handling,point,cesium,Select,Event Handling,Point,Cesium,我相信这很简单,但我已经搜索了,搜索了,查看了有关铯的文档。 我在画布上绘制了几个点。 根据它们所代表的内容对它们进行颜色编码。 我现在想“点击”一点,并在JS中发起一个行动。 我已成功捕获单击事件…(鼠标左键)…但我想知道我单击了哪个点。这可能吗?如果是这样的话,会是什么样子 viewer.screenSpaceEventHandler.setInputAction(function() { alert("left click");}, Cesium.ScreenSpace

我相信这很简单,但我已经搜索了,搜索了,查看了有关铯的文档。 我在画布上绘制了几个点。 根据它们所代表的内容对它们进行颜色编码。 我现在想“点击”一点,并在JS中发起一个行动。 我已成功捕获单击事件…(鼠标左键)…但我想知道我单击了哪个点。这可能吗?如果是这样的话,会是什么样子

viewer.screenSpaceEventHandler.setInputAction(function() {
alert("left click");}, Cesium.ScreenSpaceEventType.LEFT_DOWN);`

有不同的方法可以做到这一点。如果点已创建为铯“实体”,则可以使用事件跟踪更改

这是一个例子。首先单击底部的“控制台”选项卡,然后单击黄色和蓝色点

var viewer = new Cesium.Viewer("cesiumContainer");

viewer.entities.add({
  name: "Yellow Point",
  position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
  point: {
    pixelSize: 10,
    color: Cesium.Color.YELLOW,
  },
});

viewer.entities.add({
  name: "Blue Point",
  position: Cesium.Cartesian3.fromDegrees(-79.59777, 40.03883),
  point: {
    pixelSize: 10,
    color: Cesium.Color.BLUE,
  },
});

viewer.selectedEntityChanged.addEventListener(function(selectedEntity) {
  if (Cesium.defined(selectedEntity)) {
      if (Cesium.defined(selectedEntity.name)) {
        console.log('Selected ' + selectedEntity.name);
      } else {
        console.log('Unknown entity selected.');
      }
  } else {
    console.log('Deselected.');
  }
});
如果点不是实体(例如,图形原语),或者如果您需要对选择过程进行更多的手动控制,那么您需要的是一个称为“拾取”的系统。下面是一个示例,如果您在本地构建Sandcastle,则在开发人员部分可以找到其他拾取演示。拾取是一种低级系统,其中铯在内部重新渲染场景的一小部分,以确定给定屏幕空间位置(如鼠标指针或触摸位置)上的内容。这是几乎所有铯元素选择的动力,但它会对性能产生影响,特别是当使用不当时。查看者的
selectedEntity
机制


但是,如果您只有两个实体,并且想要跟踪选择,那么可以使用
selectedEntityChanged
事件,它要简单得多。

我认为第一个解决方案就是我要找的,谢谢