Cesium.Cartesian3.fromDegreesArray怎么设置全球黑色遮罩层
时间: 2024-10-23 11:19:35 浏览: 26
viewShed3d-cesium.js
`Cesium.Cartesian3.fromDegreesArray` 是 Cesium.js 中的一个静态方法,用于将一组经度和纬度转换为三维笛卡尔坐标系中的 Cartesian3 向量数组。这个函数通常用于创建地球表面上点的位置,但它本身并不直接支持创建全球黑色遮罩层。
要在 Cesium 中创建一个黑色的全球遮罩层,你可以通过以下步骤:
1. 创建一个地形遮罩 (`Cesium.ColorGeometryInstanceAttribute`),设置颜色为黑色 (`new Cesium.Color(0, 0, 0, 1)`,透明度设为 `1` 表示完全不透明)。
2. 使用 `Cesium.Globe.depthTestAgainstTerrain` 设置遮罩层应该覆盖地形(即深度测试启用)。
3. 构建一个 `Cesium.Geometry` 对象,包含一系列黑色遮罩点的坐标,可以使用 `fromDegreesArray` 转换地理坐标到 Cartesian3。
4. 将几何实例添加到场景中,例如 `viewer.scene.primitives.add(new Cesium.Primitive({ geometryInstances: [ ... ] }))`。
下面是一个简单的例子展示了如何创建一个黑色遮罩层:
```javascript
// 遮罩颜色 (黑)
const color = new Cesium.Color(0, 0, 0, 1);
// 经度、纬度数组
const longitudes = [];
const latitudes = [];
// 添加黑色遮罩点到数组中...
for (let i = 0; i <= 360; i += 1) {
longitudes.push(i);
latitudes.push(-90);
}
// 转换为Cartesian3
const cartesianArray = Cesium.Cartesian3.fromDegreesArray(longitudes, latitudes);
// 创建几何实例
const attribute = {
type: Cesium.GeometryInstanceAttribute.Type.POSITION,
values: cartesianArray,
color: color.getValue(),
};
// 创建几何体
const geometry = new Cesium.BufferGeometry({
attributes: { position: new Cesium.GeometryInstanceAttribute({
perInstanceData: new Cesium.PerInstanceColorAppearance({ color: color }),
}) },
});
// 添加到场景中
viewer.scene.primitives.add(
new Cesium.Primitive({
id: 'blackMask',
geometryInstances: [
new Cesium.GeometryInstance({
geometry: geometry,
appearance: new Cesium.ColorGeometryInstanceAttributeAppearance(attribute),
})
],
depthTestAgainstTerrain: true,
})
);
```
阅读全文