new Cesium.BillboardCollection(options)
一个可渲染的布告牌集合,布告牌是3D场景中与视图对齐的图像。
布告牌示例
使用
布告牌示例
使用
BillboardCollection#add
和BillboardCollection#remove
从集合中添加和删除布告牌。
集合中的广告牌自动共享具有相同标识符的图像的纹理。
效率优化说明:
为了获取更好的性能,最好是创建较少的集合,每个集合有较多的布告牌,而不是较多的集合,每个集合中有较少的布告牌。 组织集合的时候,将有相同更新频率的布告牌放在一个集合,不更新的布告牌放在一个集合。
Name | Type | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
具有下列属性的对象:
|
示例:
// 创建一个布告牌集合并添加两个布告牌。
var billboards = scene.primitives.add(new Cesium.BillboardCollection());
billboards.add({
position : new Cesium.Cartesian3(1.0, 2.0, 3.0),
image : 'url/to/image'
});
billboards.add({
position : new Cesium.Cartesian3(4.0, 5.0, 6.0),
image : 'url/to/another/image'
});
演示Demo:
参考:
成员变量
blendOption : BlendOption
布告牌混合选项。默认值用于渲染不透明和半透明的布告牌。
但是,如果所有布告牌都完全不透明或全部完全透明。将技术设置为BlendOption.OPAQUE或BlendOption.TRANSLUCENT最多可以将性能提高2倍。
-
Default Value:
BlendOption.OPAQUE_AND_TRANSLUCENT
debugShowBoundingVolume : Boolean
此属性仅用于调试;它既不用于生产,也不是最优的。
为图元中的每个绘制命令绘制包围球。
-
Default Value:
false
debugShowTextureAtlas : Boolean
此属性仅用于调试;它既不用于生产,也不是最优的。
将此BillboardCollection的纹理图集绘制为全屏方形。?? Draws the texture atlas for this BillboardCollection as a fullscreen quad.
-
Default Value:
false
length : Number
返回集合中布告牌的数量,这通常与
BillboardCollection#get
一起使用,用于迭代集合中的所有布告牌。
modelMatrix : Matrix4
4x4转换矩阵,可将每个布告牌从模型坐标转换为世界坐标。
当这是单位矩阵时,将以世界坐标(即地球的WGS84坐标)绘制布告牌。
可以通过
Transforms.eastNorthUpToFixedFrame
获取。
-
Default Value:
Matrix4.IDENTITY
示例:
var center = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);
billboards.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(center);
billboards.add({
image : 'url/to/image',
position : new Cesium.Cartesian3(0.0, 0.0, 0.0) // center
});
billboards.add({
image : 'url/to/image',
position : new Cesium.Cartesian3(1000000.0, 0.0, 0.0) // east
});
billboards.add({
image : 'url/to/image',
position : new Cesium.Cartesian3(0.0, 1000000.0, 0.0) // north
});
billboards.add({
image : 'url/to/image',
position : new Cesium.Cartesian3(0.0, 0.0, 1000000.0) // up
});
参考:
内置方法
创建并将具有指定初始属性的布告牌添加到集合中,
添加的布告牌将被返回,以便以后可以修改或从集合中删除它。
Name | Type | Description |
---|---|---|
options |
Object | optional 描述布告牌属性的模板,如示例1所示。 |
返回值:
被添加到集合中的布告牌。
异常情况:
-
DeveloperError : 对象已销毁,即已经调用destroy()。
示例:
// 例1:添加一个布告牌,指定所有默认值。
var b = billboards.add({
show : true,
position : Cesium.Cartesian3.ZERO,
pixelOffset : Cesium.Cartesian2.ZERO,
eyeOffset : Cesium.Cartesian3.ZERO,
heightReference : Cesium.HeightReference.NONE,
horizontalOrigin : Cesium.HorizontalOrigin.CENTER,
verticalOrigin : Cesium.VerticalOrigin.CENTER,
scale : 1.0,
image : 'url/to/image',
imageSubRegion : undefined,
color : Cesium.Color.WHITE,
id : undefined,
rotation : 0.0,
alignedAxis : Cesium.Cartesian3.ZERO,
width : undefined,
height : undefined,
scaleByDistance : undefined,
translucencyByDistance : undefined,
pixelOffsetScaleByDistance : undefined,
sizeInMeters : false,
distanceDisplayCondition : undefined
});
// 例2:只指定广告牌的地理位置。
var b = billboards.add({
position : Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
});
参考:
检查此集合是否包含给定的布告牌。
Name | Type | Description |
---|---|---|
billboard |
Billboard | optional 要检索的布告牌。 |
返回值:
如果集合中包含此布告牌,返回true。
destroy()
销毁此对象持有的WebGL资源。
一旦对象被销毁,它将不能在使用;调用除
一旦对象被销毁,它将不能在使用;调用除
isDestroyed
之外的任何函数都会导致DeveloperError
异常。
因此,将返回值(undefined
)赋给对象,如示例所示。
异常情况:
-
DeveloperError : 对象已经被销毁。
示例:
billboards = billboards && billboards.destroy();
参考:
返回集合中指定索引处的布告牌。
此函数通常与
BillboardCollection#length
一起使用,用于迭代集合中的所有广告牌。
Name | Type | Description |
---|---|---|
index |
Number | 索引 |
返回值:
索引处的布告牌。
异常情况:
-
DeveloperError : 对象已销毁,即已经调用destroy()。
示例:
// 切换集合中每个布告牌的show属性
var len = billboards.length;
for (var i = 0; i < len; ++i) {
var b = billboards.get(i);
b.show = !b.show;
}
参考:
返回值:
false
从集合中移除一个布告牌。
效率优化说明:
如果您打算暂时隐藏布告牌,通常可以调用Billboard#show
而不是删除并重新添加布告牌。
Name | Type | Description |
---|---|---|
billboard |
Billboard | 将要被移除的布告牌。 |
返回值:
如果布告牌被移除返回
true
,如果在集合中没有找到布告牌返回 false
。
异常情况:
-
DeveloperError : 对象已销毁,即已经调用destroy()。
示例:
var b = billboards.add(...);
billboards.remove(b); // Returns true
参考:
removeAll()
移除集合中的所有布告牌。
异常情况:
-
DeveloperError : 对象已销毁,即已经调用destroy()。
示例:
billboards.add(...);
billboards.add(...);
billboards.removeAll();
参考:
update()
在 Viewer 或 CesiumWidget 渲染场景时调用
不要直接调用这个函数。这是为了列出在渲染场景时可能传播的异常:
异常情况:
-
RuntimeError : 带有id的图像必须在图集中。