PointPrimitiveCollection

new SuperMap3D.PointPrimitiveCollection(options)

可渲染的点集合。

使用 PointPrimitiveCollection#addPointPrimitiveCollection#remove 添加和删除集合中的点。
Performance:

为了获得最佳性能,最好使用几个集合,每个集合有许多点,而不要使用多个集合,每个集合只有几个点。 组织集合,使具有相同更新频率的点在同一个集合中,即不更改的点应该在一个集合中,每帧改变的点应该在另一个集合中,等等......。

Name Type Description
options Object optional 具有以下属性的对象:
Name Type Default Description
modelMatrix Matrix4 Matrix4.IDENTITY optional 将每个点从模型坐标转换到地理坐标的 4x4 变换矩阵。
debugShowBoundingVolume Boolean false optional 仅用于调试。确定是否显示该基元的命令包围球。
blendOption BlendOption BlendOption.OPAQUE_AND_TRANSLUCENT optional 点混合选项。默认值用于渲染不透明点和半透明点。 然而,如果所有的点都是完全不透明的,或者所有的点都是完全半透明的,将技术设置为BillboardRenderTechnique.OPAQUE或BillboardRenderTechnique.TRANSLUCENT可以将性能提高2倍。
Example:
// Create a pointPrimitive collection with two points
var points = scene.primitives.add(new SuperMap3D.PointPrimitiveCollection());
points.add({
  position : new SuperMap3D.Cartesian3(1.0, 2.0, 3.0),
  color : SuperMap3D.Color.YELLOW
});
points.add({
  position : new SuperMap3D.Cartesian3(4.0, 5.0, 6.0),
  color : SuperMap3D.Color.CYAN
});
See:

Members

blendOption : BlendOption

点混合选项。默认值用于渲染不透明和半透明点。 但是,如果所有点都完全不透明或完全半透明,将该技术设置为 BillboardRenderTechnique.OPAQUE 或 BillboardRenderTechnique.TRANSLUCENT 最多可将性能提高 2 倍。
Default Value: BlendOption.OPAQUE_AND_TRANSLUCENT

debugShowBoundingVolume : Boolean

此属性仅用于调试,它不是用于生产的,也没有经过优化。

为基元中的每个绘制命令绘制包围球。

Default Value: false

length : Number

返回该集合中的点数。通常与PointPrimitiveCollection#get 一起使用,以遍历集合中的所有点。

modelMatrix : Matrix4

4x4变换矩阵,将集合中的每个点从模型坐标转换为地理坐标。当这是单位矩阵时,pointPrimitives以地理坐标绘制,即地球的WGS84坐标。 本地参考帧可以通过提供不同的转换矩阵来使用,就像Transforms.eastNorthUpToFixedFrame返回的那样。
Default Value: Matrix4.IDENTITY
Example:
var center = SuperMap3D.Cartesian3.fromDegrees(-75.59777, 40.03883);
pointPrimitives.modelMatrix = SuperMap3D.Transforms.eastNorthUpToFixedFrame(center);
pointPrimitives.add({
  color : SuperMap3D.Color.ORANGE,
  position : new SuperMap3D.Cartesian3(0.0, 0.0, 0.0) // center
});
pointPrimitives.add({
  color : SuperMap3D.Color.YELLOW,
  position : new SuperMap3D.Cartesian3(1000000.0, 0.0, 0.0) // east
});
pointPrimitives.add({
  color : SuperMap3D.Color.GREEN,
  position : new SuperMap3D.Cartesian3(0.0, 1000000.0, 0.0) // north
});
pointPrimitives.add({
  color : SuperMap3D.Color.CYAN,
  position : new SuperMap3D.Cartesian3(0.0, 0.0, 1000000.0) // up
});
See:

Methods

add(pointPrimitive)PointPrimitive

创建并向集合中添加一个具有指定初始属性的点。添加的点会被返回,以便以后修改或从集合中删除。
Performance:

调用添加操作预计时间不变。但是,集合的顶点缓冲区会被重写,这是一个 O(n) 运算,也会产生 CPU 到 GPU 的开销。 为获得最佳性能,应在调用 update 之前添加尽可能多的 pointPrimitives

Name Type Description
pointPrimitive Object optional 描述点属性的模板,如例 1 所示。
Returns:
被添加到集合中的点。
Throws:
  • DeveloperError : This object was destroyed, i.e., destroy() was called.
Examples:
// Example 1:  Add a point, specifying all the default values.
var p = pointPrimitives.add({
  show : true,
  position : SuperMap3D.Cartesian3.ZERO,
  pixelSize : 10.0,
  color : SuperMap3D.Color.WHITE,
  outlineColor : SuperMap3D.Color.TRANSPARENT,
  outlineWidth : 0.0,
  id : undefined
});
// Example 2:  Specify only the point's cartographic position.
var p = pointPrimitives.add({
  position : SuperMap3D.Cartesian3.fromDegrees(longitude, latitude, height)
});
See:

contains(pointPrimitive)Boolean

检查该集合是否包含给定的点。
Name Type Description
pointPrimitive PointPrimitive optional 要检查的点。
Returns:
如果该集合包含该点,则为 true,否则为 false。
See:

destroy()undefined

销毁该对象持有的 WebGL 资源。 销毁对象可以确定性地 释放 WebGL 资源,而不是依赖垃圾回收器来销毁该对象。

一旦对象被销毁,就不得再使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。 因此,请按照示例中的方法将返回值(undefined)赋值给对象。
Returns:
Throws:
Example:
pointPrimitives = pointPrimitives && pointPrimitives.destroy();
See:

get(index)PointPrimitive

返回集合中指定索引处的点。 索引为0,并随着点的增加而增加。 移除一个点会将其后的所有点向左移动,从而改变它们的索引。 此函数通常与 PointPrimitiveCollection#length 一起使用,以遍历集合中的所有点。
Performance:

预期恒定时间。如果点已从集合中删除,且PointPrimitiveCollection#update 未被调用,则会执行隐式 O(n) 操作。

Name Type Description
index Number 点的0基索引。
Returns:
指定索引处的点。
Throws:
Example:
// Toggle the show property of every point in the collection
var len = pointPrimitives.length;
for (var i = 0; i < len; ++i) {
  var p = pointPrimitives.get(i);
  p.show = !p.show;
}
See:

isDestroyed()Boolean

如果该对象已被销毁,则返回 true;否则返回 false。

如果该对象已被销毁,则不应使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。
Returns:
如果该对象已被销毁,则为 true;否则为 false。
See:

remove(pointPrimitive)Boolean

从集合中移除点。
Performance:

调用移除操作预计时间不变。 然而,集合的顶点缓冲区会被重写,这是一个 O(n) 运算,同时也会产生 CPU 到 GPU 的开销。 如果您打算暂时隐藏一个点,通常调用 PointPrimitive#show 比删除和重新添加点更有效。

Name Type Description
pointPrimitive PointPrimitive 要移除的点。
Returns:
如果点已被移除,则为 true;如果在集合中找不到该点,则为 false。
Throws:
Example:
var p = pointPrimitives.add(...);
pointPrimitives.remove(p);  // Returns true
See:

removeAll()

从集合中移除所有点。
Performance:

O(n) 从一个集合中删除所有点,然后再添加新点,比完全创建一个新集合更有效率。

Throws:
Example:
pointPrimitives.add(...);
pointPrimitives.add(...);
pointPrimitives.removeAll();
See: