Class: PrimitiveCollection

PrimitiveCollection

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#destroyPrimitiveCollection#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
primitive Object

补充的原始数据。

Throws:

该对象被销毁,即调用destroy()。

Type
DeveloperError
Returns:
Type Description
Object 添加到集合中的基元。
Example
var billboards = scene.primitives.add(new SuperMap3D.BillboardCollection());

contains(primitive){Boolean}

确定该集合是否包含一个基元。

Name Type Description
primitive Object 可选

需要检查的原始数据。

See:
Throws:

该对象已被销毁,即 destroy() 被调用。

Type
DeveloperError
Returns:
Type Description
Boolean 如果基元在集合中,则为 true;如果基元未定义或在集合中找不到,则为 false。

destroy(){undefined}

销毁该集合中每个基元所持有的 WebGL 资源。显式销毁该集合可以确定性地释放 WebGL 资源,而不是依赖垃圾回收器来销毁该集合。

由于销毁集合会销毁所有包含的基元,因此只有在确定没有其他代码仍在使用任何包含的基元时,才能销毁集合。

一旦该集合被销毁,就不应再使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。因此,请按照示例中的方法将返回值(未定义)赋值给对象。

See:
Throws:

该对象已被销毁,即 destroy() 被调用。

Type
DeveloperError
Returns:
Type Description
undefined
Example
primitives = primitives && primitives.destroy();

get(index){Object}

返回指定索引处集合中的基元。

Name Type Description
index Number

要返回的基元的零基索引。

See:
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 异常。

See:
Returns:
Type Description
Boolean 如果该对象已被销毁,则为 true;否则为 false。

lower(primitive)

将基元在集合中 "下移一个"。 如果集合中的所有基元都绘制在球面上,则会将原型向下移动一个。

Name Type Description
primitive Object 可选

要降低的基元。

See:
Throws:
  • primitive 不在集合中。

    Type
    DeveloperError
  • 该对象已被销毁,即 destroy() 被调用。

    Type
    DeveloperError

lowerToBottom(primitive)

将基元降低到集合的 "底部"。 如果集合中的所有基元都绘制在球面上,则会将该基元移动到底部。

Name Type Description
primitive Object 可选

要降低到底部的基元。

See:
Throws:
  • 基元不在此集合中。

    Type
    DeveloperError
  • 该对象已被销毁,即 destroy() 被调用。

    Type
    DeveloperError

raise(primitive)

将集合中的基元 "上移一级"。如果集合中的所有基元都绘制在球面上,则会将该基元向上移动一级。

Name Type Description
primitive Object 可选

要引发的基元。

See:
Throws:
  • primitive 不在集合里。

    Type
    DeveloperError
  • 该对象已被销毁,即 destroy() 被调用。

    Type
    DeveloperError

raiseToTop(primitive)

将基元提升到集合的 "顶部"。如果集合中的所有基元都绘制在球面上,则该图元会被移动到顶端。

Name Type Description
primitive Object 可选

将基元提升到"顶部"。

See:
Throws:
  • primitive 不在集合中。

    Type
    DeveloperError
  • 该对象被销毁,即调用destroy()。

    Type
    DeveloperError

remove(primitive){Boolean}

从集合中移除基元。

Name Type Description
primitive Object 可选

要移除的基元。

See:
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()

删除集合中的所有基元。

See:
Throws:

该对象已被销毁,即 destroy() 被调用。

Type
DeveloperError