private void UpdateDisplay(Polyline polyline)
{
Polygon area = null;
if (polyline != null && polyline.Parts[0].Count > 2)
{
area = new Polygon(polyline.Parts, polyline.SpatialReference);
}
OnMeasureUpdated((Geometry)area ?? polyline);
MapPoint previousPoint = null;
int coordinateIndex = 0;
foreach (var measureItem in MeasureItemCollection)
{
measureItem.CoordinateIndex = coordinateIndex++;
if (previousPoint != null)
{
measureItem.Length = GeometryEngine.GeodesicLength(
new Polyline(new MapPoint[]{ previousPoint, measureItem.Location },
measureItem.Location.SpatialReference),
GeodeticCurveType.GreatElliptic);
}
previousPoint = measureItem.Location;
}
MeasureSummary.TotalLength = polyline == null || polyline.Parts[0].Count < 2
? 0
: GeometryEngine.GeodesicLength(polyline);
MeasureSummary.Area = area == null
? 0
: GeometryEngine.GeodesicArea(area);
}