2017-01-10 4 views
2

나는 Cesium에서 polyline 컬렉션을 보여주는 방법을 문서를 읽은 후에 확신 할 수 없기 때문에 뭔가 잘못하고 있어야합니다. 폴리 라인 컬렉션을 표시하는 방법에 대한 자세한 내용은 설명서 here에있는 방법이나 자습서를 명시 적으로보고 있지 않습니다. 도 아니다 나는 다음 반복에 대한 PolylineCollection의 추가 (및 제안에 대한 예제 코드를 사용하여 시도 만세슘에 다중 선 컬렉션을 표시하는 방법은 무엇입니까?

viewer.entites.add(Polyline) 

으로 단일 폴리 라인을 표시 this one, 그 시점에 더 보인다 내가 찾을 수있는 모래 상자가 어떤 자습서는 이 샌드 박스에서) 전환하지만, 아무것도 표시되지 않으며, 오류가 표시되지 않습니다 :

// Create a polyline collection with two polylines 
var polylines = new Cesium.PolylineCollection(); 
polylines.add({ 
    positions : Cesium.Cartesian3.fromDegreesArray([ 
    -75.10, 39.57, 
    -77.02, 38.53, 
    -80.50, 35.14, 
    -80.12, 25.46]), 
    width : 2 
}); 

polylines.add({ 
    positions : Cesium.Cartesian3.fromDegreesArray([ 
    -73.10, 37.57, 
    -75.02, 36.53, 
    -78.50, 33.14, 
    -78.12, 23.46]), 
    width : 4 
}); 
// Toggle the show property of every polyline in the collection 
var len = polylines.length; 
for (var i = 0; i < len; ++i) { 
    var p = polylines.get(i); 
    p.show = true; 
} 

나는이 렌더링하는쪽으로 문서가 나를 가리킨 것이다 의미 다른 모르겠어요. 어떤 도움을 주셔서 감사합니다.

답변

1

세슘 API 레이어를 여기에 혼합합니다. 세슘은 공개 API, "엔티티"레이어 및 "프리미티브"레이어의 두 가지 레이어를 가지고 있습니다. 프리미티브 레이어는 그래픽 프리미티브를위한 것입니다. 전체 폴리 라인 컬렉션은 사실 하나의 그래픽 프리미티브 (내부적으로 단일 "그리기 호출")이며 광고 게시판 컬렉션은 다른 단일 프리미티브 등입니다. "엔터티"는 더 높은 객체 또는 차량의 수준 높은 개념, 예를 들어 단일 트럭 엔티티에는 광고판, 라벨 및 폴리 라인이있어 모두 트럭 위치 및 위치를 나타낼 수 있습니다. 별도의 엔티티 컬렉션은 그래픽 성능상의 이유로 게시판 컬렉션 하나와 폴리 라인 컬렉션 하나를 공유합니다.

일반적으로 그래픽 프리미티브 모음 대신 실제 개체를 생각할 수 있도록 가능한 한 실용적인 곳에서 Entity 레이어를 사용하는 것이 좋습니다. 그러나 때로는 컬렉션에 직접 제출하는 것이 더 효율적 인 정적 프리미티브 컬렉션이 많습니다.

demo you linked에서 코드에는 여러 개의 엔티티가 만들어지고 각각에 폴리 라인이 첨부됩니다. 그러나 게시 한 코드에서 PolylineCollection을 수동으로 만들고 표시하려고합니다. 그래서, 코드를 수정이 줄을 제거합니다 :

viewer.entites.add(Polyline) 

을이 줄을 추가 : polylines이 코드에서 선언

viewer.scene.primitives.add(polylines); 

하는 것으로,하지만 Polyline 그냥 클래스입니다. 또한 polylineCollection을 entity이 아닌 scene.primitive으로 추가합니다.

실제로 사용하고있는 내용에 따라 여기에서 코드를 스크랩하고 링크 한 엔티티 데모 코드를 다시 복사 한 다음 해당 양식을 대신 사용하는 것이 더 나을 수도 있습니다.

+0

아,이 말이 맞습니다! Shoot, 특정 작업을하려고하는 문서를 건너 뛰었습니다. 나는 몇 가지 핵심 개념을 놓쳤다. 명확하게 해 주셔서 감사합니다. 실제로 폴리 라인을 적용 할 때 참조 위치가 엔티티이지만 엔티티 객체와 실제로 연관되지 않은 많은 폴리 ​​라인을 갖게됩니다 (데이터 모델에서 독립적으로 숨기거나 표시/표현해야하기 때문에). 그래서 나는 여전히 엔드 포인트 위치를 할당 할 수있는 한 프리미티브를 유지할 수 있다고 생각합니다. 지금 "큰 소리로"생각하고있어. 당신의 대답이 내 혼란을 해결했습니다. 감사! – ThePartyTurtle