English中文

PointPrimitiveCollection

new Cesium.PointPrimitiveCollection(options)

可渲染的点集合。 A renderable collection of points.

使用以下方法在集合中添加和删除点 Points are added and removed from the collection using PointPrimitiveCollection#add and PointPrimitiveCollection#remove.
性能: Performance:

为了获得最佳性能,最好选择几个集合,每个集合都有很多点,而不是多个集合,每个集合只有几个点。组织集合,使更新频率相同的点在同一个集合中,即不发生变化的点应该在一个集合中;改变每一帧的点应该在另一个集合中;等等。 For best performance, prefer a few collections, each with many points, to many collections with only a few points each. Organize collections so that points with the same update frequency are in the same collection, i.e., points that do not change should be in one collection; points that change every frame should be in another collection; and so on.

名称 Name 类型 Type 说明 Description
options object 可选 optional 具有以下属性的对象: Object with the following properties:
名称 Name 类型 Type 默认值 Default 说明 Description
modelMatrix Matrix4 Matrix4.IDENTITY 可选 optional 将每个点从模型坐标变换到世界坐标的 4x4 变换矩阵。 The 4x4 transformation matrix that transforms each point from model to world coordinates.
debugShowBoundingVolume boolean false 可选 optional 仅用于调试。确定是否显示该图元的命令的边界球体。 For debugging only. Determines if this primitive's commands' bounding spheres are shown.
blendOption BlendOption BlendOption.OPAQUE_AND_TRANSLUCENT 可选 optional 点混合选项。默认值用于渲染不透明点和半透明点。但是,如果所有点都完全不透明或全部完全半透明,则将技术设置为 BlendOption.OPAQUE 或 BlendOption.TRANSLUCENT 可以将性能提高多达 2 倍。 The point blending option. The default is used for rendering both opaque and translucent points. However, if either all of the points are completely opaque or all are completely translucent, setting the technique to BlendOption.OPAQUE or BlendOption.TRANSLUCENT can improve performance by up to 2x.
show boolean true 可选 optional 确定是否显示集合中的基元。 Determines if the primitives in the collection will be shown.
示例: Example:
// Create a pointPrimitive collection with two points
const points = scene.primitives.add(new Cesium.PointPrimitiveCollection());
points.add({
  position : new Cesium.Cartesian3(1.0, 2.0, 3.0),
  color : Cesium.Color.YELLOW
});
points.add({
  position : new Cesium.Cartesian3(4.0, 5.0, 6.0),
  color : Cesium.Color.CYAN
});
另见: See:

成员 Members

点混合选项。默认值用于渲染不透明点和半透明点。但是,如果所有点都完全不透明或全部完全半透明,则将技术设置为 BlendOption.OPAQUE 或 BlendOption.TRANSLUCENT 可以将性能提高多达 2 倍。 The point blending option. The default is used for rendering both opaque and translucent points. However, if either all of the points are completely opaque or all are completely translucent, setting the technique to BlendOption.OPAQUE or BlendOption.TRANSLUCENT can improve performance by up to 2x.
默认值: Default Value: BlendOption.OPAQUE_AND_TRANSLUCENT

debugShowBoundingVolume : boolean

该属性仅用于调试;它不适合生产用途,也没有经过优化。 This property is for debugging only; it is not for production use nor is it optimized.

Draws the bounding sphere for each draw command in the primitive.

默认值: Default Value: false
返回此集合中的点数。这通常与 Returns the number of points in this collection. This is commonly used with PointPrimitiveCollection#get 迭代集合中的所有点。 to iterate over all the points in the collection.
4x4 变换矩阵,用于将该集合中的每个点从模型坐标变换到世界坐标。当这是单位矩阵时,pointPrimitives 会在世界坐标(即地球的 WGS84 坐标)中绘制。可以通过提供不同的变换矩阵来使用局部参考系,例如返回的矩阵 The 4x4 transformation matrix that transforms each point in this collection from model to world coordinates. When this is the identity matrix, the pointPrimitives are drawn in world coordinates, i.e., Earth's WGS84 coordinates. Local reference frames can be used by providing a different transformation matrix, like that returned by Transforms.eastNorthUpToFixedFrame.
默认值: Default Value: Matrix4.IDENTITY
示例: Example:
const center = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);
pointPrimitives.modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(center);
pointPrimitives.add({
  color : Cesium.Color.ORANGE,
  position : new Cesium.Cartesian3(0.0, 0.0, 0.0) // center
});
pointPrimitives.add({
  color : Cesium.Color.YELLOW,
  position : new Cesium.Cartesian3(1000000.0, 0.0, 0.0) // east
});
pointPrimitives.add({
  color : Cesium.Color.GREEN,
  position : new Cesium.Cartesian3(0.0, 1000000.0, 0.0) // north
});
pointPrimitives.add({
  color : Cesium.Color.CYAN,
  position : new Cesium.Cartesian3(0.0, 0.0, 1000000.0) // up
});
另见: See:
确定是否显示该集合中的基元。 Determines if primitives in this collection will be shown.
默认值: Default Value: true

方法 Methods

创建具有指定初始属性的点并将其添加到集合中。返回添加的点,以便稍后可以对其进行修改或从集合中删除。 Creates and adds a point with the specified initial properties to the collection. The added point is returned so it can be modified or removed from the collection later.
性能: Performance:

Calling add 是预期的常数时间。然而,集合的顶点缓冲区被重写 is expected constant time. However, the collection's vertex buffer is rewritten - an O(n) 操作也会产生 CPU 到 GPU 的开销。为了获得最佳性能,请在调用之前添加尽可能多的 pointPrimitives operation that also incurs CPU to GPU overhead. For best performance, add as many pointPrimitives as possible before calling update.

名称 Name 类型 Type 说明 Description
options object 可选 optional 描述点属性的模板,如示例 1 所示。 A template describing the point's properties as shown in Example 1.
返回: Returns:
添加到集合中的点。 The point that was added to the collection.
抛出: Throws:
  • DeveloperError : This object was destroyed, i.e., destroy() was called.
示例: Examples:
// Example 1:  Add a point, specifying all the default values.
const p = pointPrimitives.add({
  show : true,
  position : Cesium.Cartesian3.ZERO,
  pixelSize : 10.0,
  color : Cesium.Color.WHITE,
  outlineColor : Cesium.Color.TRANSPARENT,
  outlineWidth : 0.0,
  id : undefined
});
// Example 2:  Specify only the point's cartographic position.
const p = pointPrimitives.add({
  position : Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
});
另见: See:

contains(pointPrimitive)boolean

检查该集合是否包含给定点。 Check whether this collection contains a given point.
名称 Name 类型 Type 说明 Description
pointPrimitive PointPrimitive 可选 optional 要检查的点。 The point to check for.
返回: Returns:
如果该集合包含该点,则为 true,否则为 false。 true if this collection contains the point, false otherwise.
另见: See:
销毁该对象持有的 WebGL 资源。销毁对象可以确定性地释放 WebGL 资源,而不是依赖垃圾收集器来销毁该对象。 Destroys the WebGL resources held by this object. Destroying an object allows for deterministic release of WebGL resources, instead of relying on the garbage collector to destroy this object.

一旦对象被销毁,就不应再使用;调用除 Once an object is destroyed, it should not be used; calling any function other than isDestroyed 将导致 will result in a DeveloperError 例外。因此,分配返回值( exception. Therefore, assign the return value (undefined) 到对象,如示例中所做的那样。 ) to the object as done in the example.
抛出: Throws:
  • DeveloperError : This object was destroyed, i.e., destroy() was called.
示例: Example:
pointPrimitives = pointPrimitives && pointPrimitives.destroy();
另见: See:
返回集合中指定索引处的点。指数从零开始,并随着点数的增加而增加。删除一个点会将其后面的所有点向左移动,从而更改它们的索引。此功能通常与 Returns the point in the collection at the specified index. Indices are zero-based and increase as points are added. Removing a point shifts all points after it to the left, changing their indices. This function is commonly used with PointPrimitiveCollection#length 迭代集合中的所有点。 to iterate over all the points in the collection.
性能: Performance:

预期时间恒定。如果点被从集合中移除并且 Expected constant time. If points were removed from the collection and PointPrimitiveCollection#update 没有被调用,隐式的 was not called, an implicit O(n) 执行操作。 operation is performed.

名称 Name 类型 Type 说明 Description
index number 点的从零开始的索引。 The zero-based index of the point.
返回: Returns:
指定索引处的点。 The point at the specified index.
抛出: Throws:
  • DeveloperError : This object was destroyed, i.e., destroy() was called.
示例: Example:
// Toggle the show property of every point in the collection
const len = pointPrimitives.length;
for (let i = 0; i < len; ++i) {
  const p = pointPrimitives.get(i);
  p.show = !p.show;
}
另见: See:
如果该对象被销毁则返回 true;否则为假。 Returns true if this object was destroyed; otherwise, false.

如果该对象被破坏,则不应使用它;调用除 If this object was destroyed, it should not be used; calling any function other than isDestroyed 将导致 will result in a DeveloperError exception.
返回: Returns:
true 如果该物体被摧毁;否则, if this object was destroyed; otherwise, false.
另见: See:

remove(pointPrimitive)boolean

从集合中删除一个点。 Removes a point from the collection.
性能: Performance:

Calling remove 是预期的常数时间。然而,集合的顶点缓冲区被重写 is expected constant time. However, the collection's vertex buffer is rewritten - an O(n) 操作也会产生 CPU 到 GPU 的开销。为了获得最佳性能,请在调用之前删除尽可能多的点 operation that also incurs CPU to GPU overhead. For best performance, remove as many points as possible before calling update。如果您打算暂时隐藏一个点,通常调用更有效 . If you intend to temporarily hide a point, it is usually more efficient to call PointPrimitive#show 而不是删除并重新添加该点。 instead of removing and re-adding the point.

名称 Name 类型 Type 说明 Description
pointPrimitive PointPrimitive 要删除的点。 The point to remove.
返回: Returns:
true 如果该点被删除; if the point was removed; false 如果在集合中未找到该点。 if the point was not found in the collection.
抛出: Throws:
  • DeveloperError : This object was destroyed, i.e., destroy() was called.
示例: Example:
const p = pointPrimitives.add(...);
pointPrimitives.remove(p);  // Returns true
另见: See:
从集合中删除所有点。 Removes all points from the collection.
性能: Performance:

O(n)。从集合中删除所有点然后添加新点比完全创建新集合更有效。 . It is more efficient to remove all the points from a collection and then add new ones than to create a new collection entirely.

抛出: Throws:
  • DeveloperError : This object was destroyed, i.e., destroy() was called.
示例: Example:
pointPrimitives.add(...);
pointPrimitives.add(...);
pointPrimitives.removeAll();
另见: See:
需要帮助吗?获得答案的最快方法是从社区和团队那里获得答案 Need help? The fastest way to get answers is from the community and team on the Cesium Forum.