private void OnUpdateMeasureArea(object commandParameter)
{
if (!(commandParameter is EventArgs) || m_MeasureLayer == null)
return;
if (commandParameter is MeasureUpdatedEventArgs)
{
m_MeasureLayer.Graphics.Clear();
var e = commandParameter as MeasureUpdatedEventArgs;
if (e.Area is Polygon)
m_MeasureLayer.Graphics.Add(new Graphic() { Geometry = e.Area, Symbol = measureAreaSymbol });
}
else if (commandParameter is MeasureCompletedEventArgs)
{
m_MeasureLayer.Graphics.Clear();
var e = commandParameter as MeasureCompletedEventArgs;
if (e.Error == null && !e.IsCanceled)
{
if (e.Geometry is Polyline)
{
var polyline = e.Geometry as Polyline;
if (polyline.Parts != null && polyline.Parts.Count > 0)
{
var vertices = polyline.Parts[0].GetPoints();
if (vertices != null && vertices.Count() > 2)
{
var area = new Polygon(vertices, polyline.SpatialReference);
m_MeasureLayer.Graphics.Add(new Graphic() { Geometry = area, Symbol = measureAreaSymbol });
}
m_MeasureLayer.Graphics.Add(new Graphic() { Geometry = polyline, Symbol = measureLineSymbol });
int i = 0;
if (vertices != null)
foreach (var vertex in vertices)
{
var mapPoint = vertex;
var graphic = new Graphic() { Geometry = mapPoint };
graphic.Symbol = GetVertexSymbol(++i);
m_MeasureLayer.Graphics.Add(graphic);
}
}
}
}
}
measureHasItems = m_MeasureLayer.Graphics.Count > 0;
base.RaisePropertyChanged("IsClearGraphicsVisible");
}