我需要在Cesium JS中创建billboardCollection并将其放在entity中。

我创建了两个广告牌,并尝试将其添加到billboardColletion中,然后在创建entity时使用它,但是仅显示标签...没有广告牌出现。

到目前为止,这是我的代码:

var pos = Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222);
var pinBuilder = new Cesium.PinBuilder();

var pointBillboard = {
    image: pinBuilder.fromColor(Cesium.Color.SALMON, 48),
    verticalOrigin: Cesium.VerticalOrigin.BOTTOM
};

var lineBillboard = {
    color: Cesium.Color.WHITE,
    image: "img/white.png",
    pixelOffset: new Cesium.Cartesian2(0, 0),
    position: pos
};

var billboards = scene.primitives.add(new Cesium.BillboardCollection());

billboards.add(pointBillboard);
billboards.add(lineBillboard);

this.entity = mapa.getViewer.entities.add({
    position: Cesium.Cartesian3.fromDegrees(-75.1641667, 39.9522222),
    billboard: billboards,
    label: {
        text: ' Ponto',
        verticalOrigin: Cesium.VerticalOrigin.TOP,
        horizontalOrigin: Cesium.HorizontalOrigin.RIGHT,
        font: '11px Helvetica',
        fillColor: Cesium.Color.WHITE,
        outlineWidth: 1,
        style: Cesium.LabelStyle.FILL
    }
});


有什么方法可以在billboardCollection中插入entity吗?

非常感谢!

最佳答案

不,抱歉,您在这里混合使用了API的两个不同层。 billboardCollection是图形基元层的一部分,实体在此基础上构建,但不以这种方式直接包含基元。

我注意到您已经在billboardCollection上调用scene.primitives.add,因此它已经在现场。由于您忘记将position: pos添加到pointBillboard定义中,所以未显示该图钉。此集合中的广告牌可以与场景中的所有实体完全分开存在。

场景中的每个实体都只允许一个广告牌,而不是一个广告牌。在幕后,许多实体将其广告牌集中到一个集合中。该集合与您在自己的代码中构造的集合是分开的。

在文档中,请注意entity.billboard采用BillboardGraphics实质上是对单个广告牌定义随时间变化的描述。它不需要实际的原始Billboard或billboardCollection。

通常,如果您只有数千个广告牌,则每个广告牌可以使用一个实体。但是,如果您还不止如此,那么您可能必须放弃高级实体,直接构建自己的billboardCollection,就像在这里所做的那样。

关于javascript - 将BillboardCollection添加到Cesium中的实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32872168/

10-10 19:28