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

何らかの理由で、これは行を示しています。これが当てはまる理由を見つけることができず、線のリストが表示され、標準のポリラインが表示されない理由がわかりません。ラインを小さなポリラインに切り刻むことなくラインを表示する方法を知っている人はいますか?

4

2 に答える 2

1

Cesium is supposed to handle the case you described. You are most likely running into some form of this bug; which has been fixed with this pull request.

于 2014-11-12T14:13:32.753 に答える
0

問題を修正しました。

どうやら Cesium.Polyline は、まったく同じ 2 つの連続した座標 (lat と lon の両方) を認識していないようです。この問題は、余分な座標を削除することで解決されるようです。

于 2014-11-12T13:40:22.183 に答える