【问题标题】:adding selected object to array returns undefined except for the current one in Cesium将选定对象添加到数组返回未定义,除了 Cesium 中的当前对象
【发布时间】:2017-09-19 07:52:15
【问题描述】:

我正在尝试在 Cesium 中编写一个多选对象的函数。 我的问题是,当我选择第一个对象时,它保存在数组“Selected[0]”中,但是当我选择第二个对象时,一个值将存储在“Selected1”中,而“Selected[0]”变得不确定!

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

这是我在Plunker中的代码

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

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

【问题讨论】:

    标签: javascript arrays select cesium


    【解决方案1】:

    这不是 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 数组。只需将它放在您的事件处理程序之外,您的代码就会按预期工作(只要涉及问题的问题)。

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 2016-08-03
      • 2020-07-20
      • 1970-01-01
      • 2014-04-08
      • 2017-07-11
      相关资源
      最近更新 更多