Polygon - Cesium Documentation

# Polygon

#### new Polygon(options)

  A renderable polygon or hierarchy of polygons.

  Name | Type | Description
  --- | --- | ---

  `options`

  Object

  optional Object with the following properties:

  Name | Type | Default | Description
  --- | --- | --- | ---
  `ellipsoid` | Ellipsoid | `Ellipsoid.WGS84` | optional The ellipsoid that the polygon is drawn on.
  `positions` | Array.<Cartesian3> |  | optional The cartesian positions of the polygon.
  `polygonHierarchy` | Object |  | optional An object defining the vertex positions of each nested polygon as defined in `Polygon#configureFromPolygonHierarchy`.
  `granularity` | Number | `CesiumMath.RADIANS_PER_DEGREE` | optional The distance, in radians, between each latitude and longitude in the underlying geometry.
  `height` | Number | `0.0` | optional The height, in meters, that the rectangle is raised above the `Polygon#ellipsoid`.
  `textureRotationAngle` | Number | `0.0` | optional The rotation of the texture coordinates, in radians. A positive rotation is counter-clockwise.
  `show` | Boolean | `true` | optional Determines if this primitive will be shown.
  `material` | Material |  | optional The surface appearance of the primitive.
  `id` | Object |  | optional A user-defined object to return when the instance is picked with `Scene#pick`
  `asynchronous` | Boolean | `true` | optional Determines if the primitive will be created asynchronously or block until ready.
  `debugShowBoundingVolume` | Boolean | `false` | optional For debugging only. Determines if the primitive's commands' bounding spheres are shown.

  ##### Throws:

  - DeveloperError : Either options.positions or options.polygonHierarchy can be provided, but not both.
  - DeveloperError : When options.positions is provided, at least three positions are required.

  ##### Examples:

      // Example 1
      var polygon = new Cesium.Polygon({
        positions : Cartesian3.fromDegreesArray([
          0.0, 0.0,
          10.0, 0.0,
          0.0, 10.0
        ]
      });

      // Example 2
      var polygon = new Cesium.Polygon();
      polygon.material.uniforms.color = {
        red   : 1.0,
        green : 0.0,
        blue  : 0.0,
        alpha : 1.0
      };
      polygon.positions = Cesium.Cartesian3.fromDegreesArray([
          0.0, 0.0,
          10.0, 0.0,
          0.0, 10.0
      ]);

  ##### Demo:

  - Cesium Sandcastle Polygons Demo
  Source: Scene/Polygon.js, line 81

### Members

#### asynchronous :Boolean

  Determines if the geometry instances will be created and batched on a web worker.
  Default Value: `true`
  Source: Scene/Polygon.js, line 180

#### 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`
  Source: Scene/Polygon.js, line 192

#### ellipsoid :Ellipsoid

  The ellipsoid that the polygon is drawn on.
  Default Value: `Ellipsoid.WGS84`
  Source: Scene/Polygon.js, line 91

#### granularity :Number

  The distance, in radians, between each latitude and longitude in the underlying geometry. A lower granularity fits the curvature of the `Polygon#ellipsoid` better, but uses more triangles.
  Default Value: `CesiumMath.RADIANS_PER_DEGREE`
  Source: Scene/Polygon.js, line 103

#### height :Number

  The height, in meters, that the polygon is raised above the `Polygon#ellipsoid`.
  Default Value: `0.0`
  Source: Scene/Polygon.js, line 113

#### id :Object

  User-defined object returned when the polygon is picked.
  Default Value: `undefined`

  ##### See:

  - Scene#pick
  Source: Scene/Polygon.js, line 169

#### material :Material

  The surface appearance of the primitive. This can be one of several built-in `Material` objects or a custom material, scripted with Fabric.

  The default material is `Material.ColorType`.

  Default Value: `Material.fromType(Material.ColorType)`

  ##### Example:

      // 1. Change the color of the default material to yellow
      polygon.material.uniforms.color = new Cesium.Color(1.0, 1.0, 0.0, 1.0);

      // 2. Change material to horizontal stripes
      polygon.material = Cesium.Material.fromType( Material.StripeType);

  ##### See:

  - Fabric
  Source: Scene/Polygon.js, line 158

#### positions :Array.<Cartesian3>

  Gets or sets positions that define the boundary of the polygon.

  ##### Example:

      polygon.positions = Cesium.Cartesian3.fromDegreesArray([
          0.0, 0.0,
          10.0, 0.0,
          0.0, 10.0
      ]);

  Source: Scene/Polygon.js, line 224

#### show :Boolean

  Determines if this primitive will be shown.
  Default Value: `true`
  Source: Scene/Polygon.js, line 133

#### textureRotationAngle :Number

  The angle, in radians, relative to north that the polygon's texture is rotated. Positive angles rotate counter-clockwise.
  Default Value: `0.0`
  Source: Scene/Polygon.js, line 124

### Methods

#### configureFromPolygonHierarchy(hierarchy)

  Create a set of polygons with holes from a nested hierarchy.

  Name | Type | Description
  --- | --- | ---

  `hierarchy`

  Object

  An object defining the vertex positions of each nested polygon. For example, the following polygon has two holes, and one hole has a hole. `holes` is optional. Leaf nodes only have `positions`.

      {
       positions : [ ... ],    // The polygon's outer boundary
       holes : [               // The polygon's inner holes
         {
           positions : [ ... ]
         },
         {
           positions : [ ... ],
           holes : [           // A polygon within a hole
            {
              positions : [ ... ]
            }
           ]
         }
       ]
      }

  ##### Throws:

  - DeveloperError : This object was destroyed, i.e., destroy() was called.

  ##### Example:

      // A triangle within a triangle
      var hierarchy = {
        positions : [
          new Cesium.Cartesian3(-634066.5629045101, -4608738.034138676, 4348640.761750969),
          new Cesium.Cartesian3(-1321523.0597310204, -5108871.981065817, 3570395.2500986718),
          new Cesium.Cartesian3(46839.74837473363, -5303481.972379478, 3530933.5841716)
        ],
        holes : [{
          positions :[
            new Cesium.Cartesian3(-646079.44483647, -4811233.11175887, 4123187.2266941597),
            new Cesium.Cartesian3(-1024015.4454943262, -5072141.413164587, 3716492.6173834214),
            new Cesium.Cartesian3(-234678.22583880965, -5189078.820849883, 3688809.059214336)
          ]
        }]
      };

  Source: Scene/Polygon.js, line 290

#### destroy() → undefined

  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.

  ##### Returns:

  ##### Throws:

  - DeveloperError : This object was destroyed, i.e., destroy() was called.

  ##### Example:

      polygon = polygon && polygon.destroy();

  ##### See:

  - Polygon#isDestroyed
  Source: Scene/Polygon.js, line 425

#### isDestroyed() → Boolean

  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:

  - Polygon#destroy
  Source: Scene/Polygon.js, line 404

#### update()

  Called when `Viewer` or `CesiumWidget` render the scene to get the draw commands needed to render this primitive.

  Do not call this function directly. This is documented just to list the exceptions that may be propagated when the scene is rendered:

  ##### Throws:

  - DeveloperError : this.ellipsoid must be defined.
  - DeveloperError : this.material must be defined.
  - DeveloperError : this.granularity must be defined.
  Source: Scene/Polygon.js, line 308