new PointPrimitiveCollection()
可渲染的点集合。
使用 PointPrimitiveCollection#add 和 PointPrimitiveCollection#remove 添加和删除集合中的点。
Performance:
为了获得最佳性能,最好使用几个集合,每个集合有许多点,而不要使用多个集合,每个集合只有几个点。 组织集合,使具有相同更新频率的点在同一个集合中,即不更改的点应该在一个集合中,每帧改变的点应该在另一个集合中,等等......。
| Name | Type | Default | Description |
|---|---|---|---|
options.modelMatrix |
Matrix4 | Matrix4.IDENTITY |
可选
将每个点从模型坐标转换到地理坐标的 4x4 变换矩阵。 |
options.debugShowBoundingVolume |
Boolean | false |
可选
仅用于调试。确定是否显示该基元的命令包围球。 |
options.blendOption |
BlendOption | BlendOption.OPAQUE_AND_TRANSLUCENT |
可选
点混合选项。默认值用于渲染不透明点和半透明点。 然而,如果所有的点都是完全不透明的,或者所有的点都是完全半透明的,将技术设置为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
});
Members
-
blendOptionBlendOption
-
点混合选项。默认值用于渲染不透明和半透明点。 但是,如果所有点都完全不透明或完全半透明,将该技术设置为 BillboardRenderTechnique.OPAQUE 或 BillboardRenderTechnique.TRANSLUCENT 最多可将性能提高 2 倍。
- Default Value: BlendOption.OPAQUE_AND_TRANSLUCENT
debugShowBoundingVolumeBoolean
此属性仅用于调试,它不是用于生产的,也没有经过优化。
为基元中的每个绘制命令绘制包围球。
- Default Value: false
lengthNumber
返回该集合中的点数。通常与PointPrimitiveCollection#get 一起使用,以遍历集合中的所有点。
modelMatrixMatrix4
4x4变换矩阵,将集合中的每个点从模型坐标转换为地理坐标。当这是单位矩阵时,pointPrimitives以地理坐标绘制,即地球的WGS84坐标。
本地参考帧可以通过提供不同的转换矩阵来使用,就像Transforms.eastNorthUpToFixedFrame返回的那样。
- Default Value:
Matrix4.IDENTITYExample
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
});
showboolean
Determines if primitives in this collection will be shown.
- Default Value: {true}
Methods
-
add(pointPrimitive){PointPrimitive}
-
创建并向集合中添加一个具有指定初始属性的点。添加的点会被返回,以便以后修改或从集合中删除。
Performance:
调用添加操作预计时间不变。但是,集合的顶点缓冲区会被重写,这是一个 O(n) 运算,也会产生 CPU 到 GPU 的开销。 为获得最佳性能,应在调用 update 之前添加尽可能多的 pointPrimitives
Name Type Description pointPrimitiveObject 可选 描述点属性的模板,如例 1 所示。
Throws:
-
This object was destroyed, i.e., destroy() was called.
- Type
- DeveloperError
Returns:
Type Description PointPrimitive 被添加到集合中的点。 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) }); -
-
contains(pointPrimitive){Boolean}
-
检查该集合是否包含给定的点。
Name Type Description pointPrimitivePointPrimitive 可选 要检查的点。
Returns:
Type Description Boolean 如果该集合包含该点,则为 true,否则为 false。 -
destroy(){undefined}
-
销毁该对象持有的 WebGL 资源。 销毁对象可以确定性地 释放 WebGL 资源,而不是依赖垃圾回收器来销毁该对象。
一旦对象被销毁,就不得再使用;调用 isDestroyed 以外的任何函数都将导致DeveloperError异常。 因此,请按照示例中的方法将返回值(undefined)赋值给对象。Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Returns:
Type Description undefined Example
pointPrimitives = pointPrimitives && pointPrimitives.destroy(); -
-
get(index){PointPrimitive}
-
返回集合中指定索引处的点。 索引为0,并随着点的增加而增加。 移除一个点会将其后的所有点向左移动,从而改变它们的索引。 此函数通常与
PointPrimitiveCollection#length一起使用,以遍历集合中的所有点。Performance:
预期恒定时间。如果点已从集合中删除,且
PointPrimitiveCollection#update未被调用,则会执行隐式 O(n) 操作。Name Type Description indexNumber 点的0基索引。
Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Returns:
Type Description PointPrimitive 指定索引处的点。 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; } -
-
isDestroyed(){Boolean}
-
如果该对象已被销毁,则返回 true;否则返回 false。
如果该对象已被销毁,则不应使用;调用 isDestroyed 以外的任何函数都将导致DeveloperError异常。Returns:
Type Description Boolean 如果该对象已被销毁,则为 true;否则为 false。 -
remove(pointPrimitive){Boolean}
-
从集合中移除点。
Performance:
调用移除操作预计时间不变。 然而,集合的顶点缓冲区会被重写,这是一个 O(n) 运算,同时也会产生 CPU 到 GPU 的开销。 如果您打算暂时隐藏一个点,通常调用
PointPrimitive#show比删除和重新添加点更有效。Name Type Description pointPrimitivePointPrimitive 要移除的点。
Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Returns:
Type Description Boolean 如果点已被移除,则为 true;如果在集合中找不到该点,则为 false。 Example
var p = pointPrimitives.add(...); pointPrimitives.remove(p); // Returns true -
-
removeAll()
-
从集合中移除所有点。
Performance:
O(n) 从一个集合中删除所有点,然后再添加新点,比完全创建一个新集合更有效率。
Throws:
-
该对象已被销毁,即 destroy() 被调用。
- Type
- DeveloperError
Example
pointPrimitives.add(...); pointPrimitives.add(...); pointPrimitives.removeAll(); -