2014-11-12 1 views
1

내가 선을 보여주기 위해 노력하고있어하지만 난 시작할 때이 아무것도 같은 폴리 라인을 보여줍니다 폴리 라인 작은 선에 다진 때 보여 않는, 표시되지

var geopositions = []; 

for (var i = 0; i < c.geo.length; i++) { 
    var g = c.geo[i]; 
    geopositions.push(parseFloat(g.lon)); 
    geopositions.push(parseFloat(g.lat)); 
} 

var line = { 
    positions: Cesium.Cartesian3.fromDegreesArray(geopositions), 
    width: 1, 
    id: "C" + c.id, 
    material: Cesium.Material.fromType('Color', { 
     color: Cesium.Color.fromBytes(255, 0, 0, 255) 
    }), 
    show: true 
} 
var coll = new Cesium.PolylineCollection(); 
coll.add(line); 
primitives.add(coll); 

그래서 내가 그리려고 줄 알았는데 선의 모든 점 사이의 선 (c.geo의 점)은 다음과 같습니다.

var collection = new Cesium.PolylineCollection(); 
var prev = null; 
for (var j = 0; j < c.geo.length; j++) { 
    var geo = c.geo[j]; 
    if (prev) { 
     collection.add(
      { 
       positions: Cesium.Cartesian3.fromDegreesArray([ 
        parseFloat(prev.lon), parseFloat(prev.lat), 
        parseFloat(geo.lon), parseFloat(geo.lat)]), 
       width: 2, 
       material: Cesium.Material.fromType('Color', { 
        color: Cesium.Color.fromBytes(0, 180, 0, 255) 
       }) 
      } 
     ); 
    } 
    prev = geo; 
} 
primitives.add(collection); 

어떤 이유로이 선이 표시됩니다. 이것이 왜 그런지 이유를 찾을 수 없으며 선 목록이 표시되고 표준 다중 선이 표시되지 않는 이유를 이해할 수 없습니다. 누구든지 작은 폴리 라인에서 줄을 자르지 않고 줄을 보여주는 법을 알고 있습니까?

답변

0

문제가 해결되었습니다.

명백하게 Cesium.Polyline은 똑같은 두 연속 좌표 (위도와 경도 모두)를 인식하지 않습니다. 문제는 여분의 좌표를 제거하여 해결되는 것 같습니다.

1

세슘은 당신이 설명한 경우를 다루기로되어 있습니다. 대부분 this bug의 어떤 형태로 실행되고 있습니다. this pull request으로 수정되었습니다.

+0

전체 폴리 라인에는 실제로 아무것도 표시되지 않습니다. 그러나 나는 이미 문제를 해결했다. – Manuel

+0

"길이가 1 밀리미터 미만인 선분은 그려 내지 못합니다." 세그먼트가 실패해야하는 것처럼 보일 수 있지만 내 경험상 전체 폴리 라인은 실패합니다. – Manuel