将所选对象添加到数组 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
数组。只需将它放在您的事件处理程序之外,您的代码就会按预期工作(就涉及问题的问题而言)。
我正在尝试为 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
数组。只需将它放在您的事件处理程序之外,您的代码就会按预期工作(就涉及问题的问题而言)。