Performance:
为了获得最佳性能,最好使用几个集合,每个集合有许多点,而不要使用多个集合,每个集合只有几个点。 组织集合,使具有相同更新频率的点在同一个集合中,即不更改的点应该在一个集合中,每帧改变的点应该在另一个集合中,等等......。
Name | Type | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
具有以下属性的对象:
|
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
-
此属性仅用于调试,它不是用于生产的,也没有经过优化。
为基元中的每个绘制命令绘制包围球。
-
Default Value:
false
-
返回该集合中的点数。通常与
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:
-
-
检查该集合是否包含给定的点。
Name Type Description pointPrimitive
PointPrimitive optional 要检查的点。 Returns:
如果该集合包含该点,则为 true,否则为 false。 -
销毁该对象持有的 WebGL 资源。 销毁对象可以确定性地 释放 WebGL 资源,而不是依赖垃圾回收器来销毁该对象。
一旦对象被销毁,就不得再使用;调用 isDestroyed 以外的任何函数都将导致DeveloperError
异常。 因此,请按照示例中的方法将返回值(undefined)赋值给对象。Returns:
Throws:
-
DeveloperError : 该对象已被销毁,即 destroy() 被调用。
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:
-
DeveloperError : 该对象已被销毁,即 destroy() 被调用。
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:
-
-
Returns:
如果该对象已被销毁,则为 true;否则为 false。 -
从集合中移除点。
Performance:
调用移除操作预计时间不变。 然而,集合的顶点缓冲区会被重写,这是一个 O(n) 运算,同时也会产生 CPU 到 GPU 的开销。 如果您打算暂时隐藏一个点,通常调用
PointPrimitive#show
比删除和重新添加点更有效。Name Type Description pointPrimitive
PointPrimitive 要移除的点。 Returns:
如果点已被移除,则为 true;如果在集合中找不到该点,则为 false。Throws:
-
DeveloperError : 该对象已被销毁,即 destroy() 被调用。
Example:
var p = pointPrimitives.add(...); pointPrimitives.remove(p); // Returns true
See:
-
-
从集合中移除所有点。
Performance:
O(n) 从一个集合中删除所有点,然后再添加新点,比完全创建一个新集合更有效率。
Throws:
-
DeveloperError : 该对象已被销毁,即 destroy() 被调用。
Example:
pointPrimitives.add(...); pointPrimitives.add(...); pointPrimitives.removeAll();
See:
-