折线没有显示,它显示在切割成较小的线条时

时间:2014-11-12 09:30:26

标签: javascript cesium

我试图显示一条线,但是当我启动这样的折线时,没有任何显示:

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);

出于某种原因,这确实表明了这一行。我找不到这种情况的原因,并且不理解为什么行列表会显示而标准折线没有显示。有没有人知道如何在不用小折线切断线条的情况下显示线条?

2 个答案:

答案 0 :(得分:1)

铯应该处理你描述的情况。你最有可能遇到某种形式的this bug;已使用this pull request修复。

答案 1 :(得分:0)

我解决了这个问题。

显然,Cesium.Polyline并不欣赏完全相同的两个连续坐标(lat和lon)。这个问题似乎可以通过删除额外的坐标来解决。