Solved! Go to Solution.
public partial class MainPage : UserControl
{
GraphicsLayer _pointAndBufferGraphicsLayer;
//
GeometryService _geometryService;
QueryTask _qTask;
public MainPage()
{
InitializeComponent();
_pointAndBufferGraphicsLayer = map1.Layers["MyGraphicsLayer"] as GraphicsLayer;
////
_geometryService = new GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer");
_geometryService.BufferCompleted += GeometryService_BufferCompleted;
_geometryService.Failed += GeometryService_Failed;
_qTask = new QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5");
_qTask.ExecuteCompleted += qTask_Completed;
_qTask.Failed += qTask_Failed;
}
private void map1_Click(object sender, ESRI.ArcGIS.Client.Map.MouseEventArgs e)
{
Graphic g = new Graphic();
g.Geometry = e.MapPoint;
g.Symbol = LayoutRoot.Resources["BlueMarkerSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
_pointAndBufferGraphicsLayer.ClearGraphics();
_pointAndBufferGraphicsLayer.Graphics.Add(g);
////
//// 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 = map1.SpatialReference,
Unit = LinearUnit.StatuteMile,
};
bufferParams.Distances.Add(200);
bufferParams.Features.Add(g);
_geometryService.BufferAsync(bufferParams);
}
////
void GeometryService_BufferCompleted(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);
_pointAndBufferGraphicsLayer.Graphics.Add(bufferGraphic);
//Add code here to build a Query and execute a QueryTask
Query query = new Query();
query.ReturnGeometry = true;
query.OutSpatialReference = map1.SpatialReference;
query.Geometry = bufferGraphic.Geometry;
query.OutFields.Add("*");
_qTask.ExecuteAsync(query);
query.OutFields.Add("*");
}
void qTask_Completed(object sender, QueryEventArgs args)
{
foreach (Graphic g in args.FeatureSet.Features)
{
g.Symbol = LayoutRoot.Resources["selectSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
_pointAndBufferGraphicsLayer.Graphics.Add(g);
}
}
private void qTask_Failed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Query task failed: " + args.Error);
}
////
private void GeometryService_Failed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Geometry service failed: " + args.Error);
}