【问题标题】:Displaying a polyline(with some height) in Cesium在铯中显示折线(具有一定高度)
【发布时间】:2015-05-21 23:15:31
【问题描述】:

谁能告诉我这段代码有什么问题?

    Cesium.Math.setRandomNumberSeed(1234);

    var viewer = new Cesium.Viewer('cesiumContainer');
    var entities = viewer.entities;
    var boxes = entities.add(new Cesium.Entity());
    var polylines = new Cesium.PolylineCollection();

    //Create the entities and assign each entity's parent to the group to which it belongs.
    for (var i = 0; i < 5; ++i) {
        var height = 100000.0 + (200000.0 * i);
        entities.add({
            parent : boxes,
            position : Cesium.Cartesian3.fromDegrees(-106.0, 45.0, height),
            box : {
                dimensions : new Cesium.Cartesian3(90000.0, 90000.0, 90000.0),
                material : Cesium.Color.fromRandom({alpha : 1.0})
            }
        });
        entities.add({
            parent : polylines,
            position : Cesium.Cartesian3.fromDegrees(-86.0, 55.0, height),
            polyline : {
                width : new Cesium.ConstantProperty(2),
                material : Cesium.Color.fromRandom({alpha : 1.0}),
                followSurface : new Cesium.ConstantProperty(false)
            }
        });
    }
    viewer.zoomTo(viewer.entities);

它在给定坐标处显示框,但是当我尝试绘制折线时,会出现以下错误: 未捕获的类型错误:无法读取未定义的属性“推送”(https://cesiumjs.org/Cesium/Source/DataSources/Entity.js 的第 300 行)

我想要这样的东西 https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Custom%20DataSource.html&label=Showcases

提前致谢。

【问题讨论】:

    标签: polyline cesium


    【解决方案1】:

    您正在将 Entity API(具有名称和描述的可跟踪实体的高级 API)与 Primitive Graphics API(下面的层,仅显示图形基元)混合。

    编辑:看起来 Scott Reynolds 也在mailing list 上为您回答了这个问题,并且您发布了一个后续问题。这里我借用了 Scott 的“垂直线”代码,删除了“父”关系,因为它们似乎没有在这里使用,并为所有实体添加了可点击的信息框描述。

    Cesium.Math.setRandomNumberSeed(1234);
    
    var viewer = new Cesium.Viewer('cesiumContainer');
    var entities = viewer.entities;
    
    var prevHeight = 0.0;
    for (var i = 0; i < 5; ++i) {
        var height = 100000.0 + (200000.0 * i);
        entities.add({
            name : 'Box ' + i,
            description : 'This box is at height: ' + height.toLocaleString() + ' m',
            position : Cesium.Cartesian3.fromDegrees(-106.0, 45.0, height),
            box : {
                dimensions : new Cesium.Cartesian3(90000.0, 90000.0, 90000.0),
                material : Cesium.Color.fromRandom({alpha : 1.0})
            }
        });
        entities.add({
            name : 'Line ' + i,
            description : 'This line is from height ' + prevHeight.toLocaleString() +
                ' m to height ' + height.toLocaleString() + ' m',
            position : Cesium.Cartesian3.fromDegrees(-86.0, 55.0, height),
            polyline : {
                positions: [
                    Cesium.Cartesian3.fromDegrees(-86.0, 55.0, prevHeight),
                    Cesium.Cartesian3.fromDegrees(-86.0, 55.0, height)
                ],
                width : new Cesium.ConstantProperty(2),
                material : Cesium.Color.fromRandom({alpha : 1.0}),
                followSurface : new Cesium.ConstantProperty(false)
            }
        });
    
        prevHeight = height;
    }
    viewer.zoomTo(viewer.entities);
    

    【讨论】:

    • 非常感谢@emackey。有用。但我想直立显示折线。如this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    相关资源
    最近更新 更多