我正在尝试使用材质属性设置多边形的颜色,如下所示:
drawOnMap() {
let material = Cesium.Material.fromType('Color');
material.uniforms.color = new Cesium.Color(1.0, 1.0, 0.0, 1.0);
const entityObject = {
polygon: {
hierarchy: this.positions !== undefined ? this.positions : undefined,
height: 0,
material: material,
}
};
return this.cesiumEntity = this.cesiumViewerService.getViewer().entities.add( entityObject );
}
我尝试了各种组合来创建材质,但它们都被忽略,多边形呈现为白色。我错过了什么?
请注意,如果我使用Cesium.Color.RED
,多边形将呈现为红色,如预期的那样。
非常感谢!
答案 0 :(得分:1)
您在此处使用了两种不同的API。创建实体后,您可以通过设置颜色制服等来编辑现有材料。但是,在实体存在之前,您使用的字段用于实体创建选项,而不是用于预先存在的实体。
因此,查看Entity文档,我们可以看到一个polygon
选项,其中包含PolygonGraphics,其中material
字段为MaterialProperty (不是构造的材料!),这是一个带有一些实现的抽象类,其中一个是ColorMaterialProperty。
所以,试试这个:
drawOnMap() {
let materialProperty = new Cesium.ColorMaterialProperty(
new Cesium.Color(1.0, 1.0, 0.0, 1.0)
);
const entityObject = {
polygon: {
hierarchy: this.positions !== undefined ? this.positions : undefined,
height: 0,
material: materialProperty
}
};
return this.cesiumEntity = this.cesiumViewerService.getViewer().entities.add( entityObject );
}