Hey All,

I just worked on this myself and used the following. (It’s rough, but gives a pretty good approximation.)

// Get the polygon from your “entity”

var polygon = theEntity.polygon;

var hierarchy = polygon.hierarchy._value;

// “indices” here defines an array, elements of which defines the indice of a vector

// defining one corner of a triangle. Add up the areas of those triangles to get

// an approximate area for the polygon

var indices = Cesium.PolygonPipeline.triangulate(hierarchy.positions, hierarchy.holes);

var area = 0; // In square kilometers

for (var i = 0; i < indices.length; i += 3) {

var vector1 = hierarchy.positions[indices[i]];

var vector2 = hierarchy.positions[indices[i+1]];

var vector3 = hierarchy.positions[indices[i+2]];

// These vectors define the sides of a parallelogram (double the size of the triangle)

var vectorC = Cesium.Cartesian3.subtract(vector2, vector1, new Cesium.Cartesian3());

var vectorD = Cesium.Cartesian3.subtract(vector3, vector1, new Cesium.Cartesian3());

// Area of parallelogram is the cross product of the vectors defining its sides

var areaVector = Cesium.Cartesian3.cross(vectorC, vectorD, new Cesium.Cartesian3());

// Area of the triangle is just half the area of the parallelogram, add it to the sum.

area += Cesium.Cartesian3.magnitude(areaVector)/2.0;

}

``

Hope that helps.