cesium PolylineGeometry修改positions
时间: 2023-07-05 19:24:34 浏览: 578
要修改Cesium PolylineGeometry的positions,您可以使用以下代码:
```javascript
var polylineGeometry = new Cesium.PolylineGeometry({
positions: [/* your original positions array */],
// other options...
});
var newPositions = [/* your new positions array */];
polylineGeometry.attributes.position.values = Cesium.PolylinePipeline.generatePositions(newPositions);
```
这里,您需要先创建一个PolylineGeometry对象,并将其原始位置数组传递给positions属性。然后,您可以将新位置数组存储在newPositions变量中,并将其传递给PolylinePipeline.generatePositions()方法,以生成新的位置数组。最后,您可以将新的位置数组赋值给polylineGeometry.attributes.position.values属性以更新PolylineGeometry的位置。
相关问题
更新 cesium polylinegeometry position
要更新Cesium PolylineGeometry的位置,您可以使用以下步骤:
1. 获取现有的PolylineGeometry对象:
```javascript
var polylineGeometry = polyline.geometry;
```
2. 获取现有的位置数组:
```javascript
var positions = polylineGeometry.positions;
```
3. 更新位置数组中的值:
```javascript
positions[0] = Cesium.Cartesian3.fromDegrees(lon1, lat1, height1);
positions[1] = Cesium.Cartesian3.fromDegrees(lon2, lat2, height2);
// 更改其他位置...
```
4. 将更新后的位置数组设置回PolylineGeometry对象:
```javascript
polylineGeometry.positions = positions;
```
5. 更新PolylineGeometry对象的外观:
```javascript
polyline.appearance = new Cesium.PolylineMaterialAppearance({
material: Cesium.Material.fromType('Color', {
color: Cesium.Color.YELLOW
})
});
```
完整示例代码如下:
```javascript
var viewer = new Cesium.Viewer('cesiumContainer');
// 添加Polyline
var polyline = viewer.entities.add({
name: 'Polyline',
polyline: {
positions: Cesium.Cartesian3.fromDegreesArrayHeights([
-75, 35, 0,
-125, 35, 0
]),
width: 10,
material: Cesium.Color.YELLOW
}
});
// 获取现有的PolylineGeometry对象
var polylineGeometry = polyline.geometry;
// 获取现有位置数组
var positions = polylineGeometry.positions;
// 更新位置数组中的值
positions[0] = Cesium.Cartesian3.fromDegrees(-75, 40, 0);
positions[1] = Cesium.Cartesian3.fromDegrees(-125, 40, 0);
// 将更新后的位置数组设置回PolylineGeometry对象
polylineGeometry.positions = positions;
// 更新PolylineGeometry对象的外观
polyline.appearance = new Cesium.PolylineMaterialAppearance({
material: Cesium.Material.fromType('Color', {
color: Cesium.Color.RED
})
});
```
cesium 修改primite线位置
要修改Cesium中Primitive的线位置,可以使用以下步骤:
1. 获取Primitive对象。
2. 获取该Primitive对象的Geometry对象。
3. 获取Geometry对象的属性(即positions属性)。
4. 修改属性中的顶点坐标值。
5. 更新Primitive对象。
下面是一个示例代码,演示如何修改Primitive线的位置:
```
var viewer = new Cesium.Viewer('cesiumContainer');
var primitive = viewer.scene.primitives.add(new Cesium.Primitive({
geometryInstances: new Cesium.GeometryInstance({
geometry: new Cesium.PolylineGeometry({
positions: Cesium.Cartesian3.fromDegreesArray([
-75.0, 40.0,
-80.0, 35.0
]),
width: 5.0
})
}),
appearance: new Cesium.PolylineMaterialAppearance({
material: Cesium.Material.fromType('Color', {
color: Cesium.Color.RED
})
})
}));
var geometry = primitive.getGeometryInstanceAttributes();
var positions = geometry.position;
// 修改顶点坐标
positions[0] = -80.0;
positions[1] = 35.0;
positions[3] = -75.0;
positions[4] = 40.0;
// 更新Primitive对象
primitive.getGeometryInstanceAttributes().position = positions;
primitive.getGeometryInstanceAttributes().applyChanges();
```
在这个示例中,我们首先创建了一个包含两个点的PolylineGeometry,并将其添加到一个Primitive中。然后,我们获取了Primitive对象的Geometry对象,以便修改其属性。我们通过修改顶点的坐标来改变线的位置,并使用applyChanges()方法更新Primitive对象。
请注意,这只是一个示例,实际应用中,可能需要根据具体情况进行修改。
阅读全文