Where in this code would I place a "foreach" to get the multiple rings for buffer distances to show? I tried on buffer execute completed - but than the query async fails. Any insight would be appreciated.
private void EditorEditCompleted(object sender, Editor.EditEventArgs e)
{
if (e.Action == Editor.EditAction.Select)
{
_geometryService.CancelAsync();
_queryTask.CancelAsync();
foreach (Editor.Change item in e.Edits)
{
Graphic clickGraphic = item.Graphic; //selected graphic
Layer layer = item.Layer;
clickGraphic.Symbol = LayoutRoot.Resources["YellowMarkerSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
clickGraphic.Geometry = item.Graphic.Geometry;
_selectAndBufferGraphicsLayer.ClearGraphics();
clickGraphic.SetZIndex(2);
// If buffer spatial reference is GCS and unit is linear, geometry service will do geodesic buffering
ESRI.ArcGIS.Client.Tasks.BufferParameters bufferParams = new ESRI.ArcGIS.Client.Tasks.
BufferParameters()
{
BufferSpatialReference =
new SpatialReference(4326),
OutSpatialReference =
Map.SpatialReference,
Unit = LinearUnit.StatuteMile,
};
bufferParams.Distances.AddRange(new double[] {10, 20, 50});
bufferParams.Features.Add(clickGraphic);
_geometryService.BufferAsync(bufferParams);
}
}
}
void GeometryServiceBufferCompleted(object sender, GraphicsEventArgs args)
{
Graphic bufferGraphic = new Graphic();
bufferGraphic.Geometry = args.Results[0].Geometry;
bufferGraphic.Symbol = LayoutRoot.Resources["BufferSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
bufferGraphic.SetZIndex(1);
_selectAndBufferGraphicsLayer.Graphics.Add(bufferGraphic);
ESRI.ArcGIS.Client.Tasks.Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.ReturnGeometry = true;
query.OutSpatialReference = Map.SpatialReference;
query.Geometry = bufferGraphic.Geometry;
query.OutFields.Add("*");
_queryTask.ExecuteAsync(query);
}
private void QueryTaskExecuteCompleted(object sender, QueryEventArgs args)
{
if (args.FeatureSet.Features.Count < 1)
{
MessageBox.Show("No features found");
return;
}
foreach (Graphic selectedGraphic in args.FeatureSet.Features)
{
selectedGraphic.Symbol = LayoutRoot.Resources["OfficeSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
//_resultsGraphicsLayer.Graphics.Add(selectedGraphic);
}
}
private void GeometryServiceFailed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Geometry service failed: " + args.Error);
}
private void QueryTaskFailed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Query failed: " + args.Error);
}