2017-09-19 1 views
0

세슘에 다중 선택 객체에 함수를 쓰려고합니다. 내 문제는 첫 번째 개체를 선택하면 배열 "Selected [0]"에 저장되지만 두 번째 개체를 선택하면 "Selected [0]"이되는 동안 값이 "Selected 1"에 저장됩니다. 정의되지 않은!선택된 객체를 배열에 추가하면 세슘의 현재 객체를 제외하고는 undefined가 반환됩니다.

나는 단지, 현재 선택을 위해 여기

는 "선택한"배열에 저장 한 색상을 변경 선택한 모든 객체를 기억하고 지금은 그들에게 모든 강조 색상을 제공하기 위해 배열을 필요로 내 코드는 Plunker

다음 코드 부분에서 두 배열 모두 채우기에 지쳤지만 모두 작동하지 않습니다.

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

답변

0

이것은 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 빈 배열이 새로 만들어집니다. 이벤트 처리기 외부에 놓으면 코드가 예상대로 작동해야합니다 (질문의 문제가 관련되어있는 한).

+0

지금은 바보 같아요! 나는 내가주의하기에 너무 가까웠다 고 생각한다! 고맙습니다!!! –

관련 문제