多边形上忽略铯材料

时间:2017-12-13 12:49:20

标签: angular cesium

我正在尝试使用材质属性设置多边形的颜色,如下所示:

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,多边形将呈现为红色,如预期的那样。

非常感谢!

1 个答案:

答案 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 );
}