将所选对象添加到数组 returns 未定义,除了 Cesium 中的当前对象

adding selected object to array returns undefined except for the current one in Cesium

我正在尝试为 Cesium 中的多个 select 对象编写一个函数。 我的问题是,当我 select 第一个对象时,它被保存在数组 "Selected[0]" 中,但是当我 select 第二个对象时,一个值将被存储在 "Selected1" 中,而"Selected[0]" 变得未定义!

我需要数组来记住所有 selected 对象并为它们提供所有突出显示的颜色,现在它只更改当前 selected 的颜色,即保存在"Selected"数组

这是我在 Plunker

中的代码

在下面的代码部分,我已经厌倦了两种填充数组的方法,它们都不起作用。

 pickedObject = scene.pick(click.position);
 console.log ("picked  "+ pickedObject);
//selected [i]= pickedObject.id.id;
selected.push(pickedObject.id.id);

这不是 Cesium 问题 - 您的代码有错误。 在您的代码中,您在事件处理程序中初始化选定的数组:

handler.setInputAction(function(click) {
  var selected = [];
  var pickedObject = [];    
  var list ;

 pickedObject = scene.pick(click.position);
 selected [i]= pickedObject.id.id;

 console.log ("select0  " + selected[0]);
 console.log ("select1  " + selected[1]);
 console.log ("select  " + selected.length);

 for (var j=0; j< selected.length; j++){
  console.log("content: " +selected [j]);
 }
 console.log ("i:  " + i); 
 if (Cesium.defined(pickedObject) ) {
  highlightedEntity = pickedObject.id;
 }
  i++;
},Cesium.ScreenSpaceEventType.LEFT_CLICK, Cesium.KeyboardEventModifier.CTRL);

注意行 selected = [];。它会在每次点击时创建一个新的空 selected 数组。只需将它放在您的事件处理程序之外,您的代码就会按预期工作(就涉及问题的问题而言)。