new PrimitiveCollection()
用于管理多个图元(Primitive)的容器类
它通常与 Scene#primitives 一起使用,但 PrimitiveCollection 本身也是一个基元,因此可以将集合添加到集合中,形成一个层次结构。
| Name | Type | Default | Description |
|---|---|---|---|
options.show |
Boolean | true |
可选
确定是否显示集合中的基元。 |
options.destroyPrimitives |
Boolean | true |
可选
确定是否在删除集合中的基元时将其销毁。 |
Example
var billboards = new SuperMap3D.BillboardCollection();
var labels = new SuperMap3D.LabelCollection();
var collection = new SuperMap3D.PrimitiveCollection();
collection.add(billboards);
scene.primitives.add(collection); // Add collection
scene.primitives.add(labels); // Add regular primitive
Members
-
destroyPrimitivesBoolean
-
确定当使用
PrimitiveCollection#destroy或PrimitiveCollection#remove移除集合中的基元时,是否销毁集合中的基元,或者使用PrimitiveCollection#removeAll隐式移除集合中的基元。- Default Value: true
Examples
// Example 1. Primitives are destroyed by default.
var primitives = new SuperMap3D.PrimitiveCollection();
var labels = primitives.add(new SuperMap3D.LabelCollection());
primitives = primitives.destroy();
var b = labels.isDestroyed(); // true
// Example 2. Do not destroy primitives in a collection.
var primitives = new SuperMap3D.PrimitiveCollection();
primitives.destroyPrimitives = false;
var labels = primitives.add(new SuperMap3D.LabelCollection());
primitives = primitives.destroy();
var b = labels.isDestroyed(); // false
labels = labels.destroy(); // explicitly destroy
readonly lengthNumber
获取集合中基元的数量。
readonly primitiveAddedEvent
当一个基元被添加到集合中时,会引发一个事件。事件处理程序会接收到所添加的基元。
readonly primitiveRemovedEvent
当从集合中移除一个基元时,会引发一个事件。事件处理程序会接收到被移除的基元。
注意:根据destroyPrimitives构造函数选项的不同,图元可能已经被销毁。
showBoolean
确定是否显示该集合中的基元。
- Default Value: true
Methods
-
add(primitive){Object}
-
向集合中添加一个基元。
Name Type Description primitiveObject 补充的原始数据。
Throws:
-
该对象被销毁,即调用destroy()。
- Type
- DeveloperError
Returns:
Type Description Object 添加到集合中的基元。 Example
var billboards = scene.primitives.add(new SuperMap3D.BillboardCollection()); -
-
contains(primitive){Boolean}
-
确定该集合是否包含一个基元。
Name Type Description primitiveObject 可选 需要检查的原始数据。
Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Returns:
Type Description Boolean 如果基元在集合中,则为 true;如果基元未定义或在集合中找不到,则为 false。 -
-
destroy(){undefined}
-
销毁该集合中每个基元所持有的 WebGL 资源。显式销毁该集合可以确定性地释放 WebGL 资源,而不是依赖垃圾回收器来销毁该集合。
由于销毁集合会销毁所有包含的基元,因此只有在确定没有其他代码仍在使用任何包含的基元时,才能销毁集合。
一旦该集合被销毁,就不应再使用;调用 isDestroyed 以外的任何函数都将导致DeveloperError异常。因此,请按照示例中的方法将返回值(未定义)赋值给对象。Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Returns:
Type Description undefined Example
primitives = primitives && primitives.destroy(); -
-
get(index){Object}
-
返回指定索引处集合中的基元。
Name Type Description indexNumber 要返回的基元的零基索引。
Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Returns:
Type Description Object 位于 index的基元。Example
// Toggle the show property of every primitive in the collection. var primitives = scene.primitives; var length = primitives.length; for (var i = 0; i < length; ++i) { var p = primitives.get(i); p.show = !p.show; } -
-
isDestroyed(){Boolean}
-
如果该对象已被销毁,则返回 true;否则返回 false。
如果该对象已被销毁,则不应使用;调用 isDestroyed 以外的任何函数都将导致DeveloperError异常。Returns:
Type Description Boolean 如果该对象已被销毁,则为 true;否则为 false。 -
lower(primitive)
-
将基元在集合中 "下移一个"。 如果集合中的所有基元都绘制在球面上,则会将原型向下移动一个。
Name Type Description primitiveObject 可选 要降低的基元。
Throws:
-
-
primitive 不在集合中。
- Type
- DeveloperError
-
-
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
-
-
-
lowerToBottom(primitive)
-
将基元降低到集合的 "底部"。 如果集合中的所有基元都绘制在球面上,则会将该基元移动到底部。
Name Type Description primitiveObject 可选 要降低到底部的基元。
Throws:
-
-
基元不在此集合中。
- Type
- DeveloperError
-
-
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
-
-
-
raise(primitive)
-
将集合中的基元 "上移一级"。如果集合中的所有基元都绘制在球面上,则会将该基元向上移动一级。
Name Type Description primitiveObject 可选 要引发的基元。
Throws:
-
-
primitive 不在集合里。
- Type
- DeveloperError
-
-
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
-
-
-
raiseToTop(primitive)
-
将基元提升到集合的 "顶部"。如果集合中的所有基元都绘制在球面上,则该图元会被移动到顶端。
Name Type Description primitiveObject 可选 将基元提升到"顶部"。
Throws:
-
-
primitive 不在集合中。
- Type
- DeveloperError
-
-
-
该对象被销毁,即调用destroy()。
- Type
- DeveloperError
-
-
-
remove(primitive){Boolean}
-
从集合中移除基元。
Name Type Description primitiveObject 可选 要移除的基元。
Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Returns:
Type Description Boolean 如果基元已被移除,则为 true;如果基元未定义或在集合中找不到,则为 false。 Example
var billboards = scene.primitives.add(new SuperMap3D.BillboardCollection()); scene.primitives.remove(p); // Returns true -
-
removeAll()
-
删除集合中的所有基元。
Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
-