private void ExecuteSpatialSpeciesNameButton_Click(object sender, RoutedEventArgs e)
{
GraphicsLayer selectionGraphicslayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
selectionGraphicslayer.ClearGraphics();
QueryTask queryTask = new QueryTask((Layers.SelectedItem as FeatureLayer).Url);
queryTask.ExecuteCompleted += QuerySpa_ExecuteCompleted;
queryTask.Failed += QuerySpa_Failed;
Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.OutFields.Add("*");
//I think it doesn't like this
FeatureLayer f = Map.Layers[4] as FeatureLayer;
// IT FAILS right after this HERE
//-------------------------------------------------------??
query.Geometry = f.Geometry;
// Return geometry with result features
query.ReturnGeometry = true;
queryTask.ExecuteAsync(query);
}
private void QuerySpa_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
if (featureSet == null || featureSet.Features.Count < 1)
{
MessageBox.Show("No features retured from query");
return;
}
GraphicsLayer graphicsLayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
if (featureSet != null && featureSet.Features.Count > 0)
// ResultsDisplay.Visibility = Visibility.Visible;
{
foreach (Graphic feature in featureSet.Features)
{
switch (featureSet.GeometryType.ToString())
{
case "Polygon":
feature.Symbol = LayoutRoot.Resources["ResultsFillSymbol"] as FillSymbol;
break;
case "Polyline":
feature.Symbol = LayoutRoot.Resources["CustomGrowLineSymbol"] as LineSymbol;
break;
case "Point":
feature.Symbol = LayoutRoot.Resources["ResultsMarkerSymbol"] as SimpleMarkerSymbol;
break;
}
graphicsLayer.Graphics.Insert(0, feature);
}
//ResultsDisplay.Visibility = Visibility.Visible;
ResultsDisplay.IsExpanded = true;
}
MyDrawSurface.IsEnabled = false;
}
private void QuerySpa_Failed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Query failed: " + args.Error);
}
Why is this failing...what I am I missing?
//I think it doesn't like this FeatureLayer f = Map.Layers[4] as FeatureLayer; // IT FAILS right after this HERE //-------------------------------------------------------?? query.Geometry = f.Geometry;
private void ExecutePointsButton_Click(object sender, RoutedEventArgs e)
{
GraphicsLayer selectionGraphicslayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
selectionGraphicslayer.ClearGraphics();
QueryTask queryTask = new QueryTask((Layers.SelectedItem as FeatureLayer).Url);
queryTask.ExecuteCompleted += QuerySpa_ExecuteCompleted;
queryTask.Failed += QuerySpa_Failed;
Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.OutFields.Add("*");
GraphicsLayer polygonGraphicsLayer = Map.Layers["MyPolygonGraphicsLayer"] as GraphicsLayer;
//--------------HERE"S MY CHANGE INSTEAD OF POINT TO A MAP LAYER I"M SETTING IT TO A SERVICE --------------------------------------------------------------
string baseUrl = "http://servername/ArcGIS/rest/services/servicename/MapServer";
FeatureLayer featureLayermodel = new FeatureLayer() { Url = string.Format("{0}/{1}", baseUrl, PolySels.SelectedIndex) };
featureLayermodel.Initialize();
// query.Geometry = featureLayermodel.Graphics[0].Geometry;
//-----------THIS RETURNS NOTHING -----SEE BELOW FOR ERROR ----//
query.Geometry = featureLayermodel.FullExtent;
// Return geometry with result features
query.ReturnGeometry = true;
queryTask.ExecuteAsync(query);
}
private void ExecuteSpatialPointWithinPolysButton_Click(object sender, RoutedEventArgs e)
{
QueryTask queryTaskm = new QueryTask((Models.SelectedItem as FeatureLayer).Url);
queryTaskm.ExecuteCompleted += queryTaskmod_ExecuteCompleted;
Query mquery = new ESRI.ArcGIS.Client.Tasks.Query();
mquery.OutSpatialReference = Map.SpatialReference;
mquery.ReturnGeometry = true;
mquery.Where = "1=1";
queryTaskm.ExecuteAsync(mquery);
}
void queryTaskmod_ExecuteCompleted(object sender, QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
if (featureSet == null || featureSet.Features.Count < 1)
{
MessageBox.Show("No features retured from query");
return;
}
GraphicsLayer graphicsLayerModPoly = Map.Layers["MyGraphicsLayer"] as GraphicsLayer;
foreach (Graphic graphic in featureSet.Features)
{
// graphic.Symbol = LayoutRoot.Resources["ResultsFillSymbol"] as FillSymbol; // to show the selected Polys
graphicsLayerModPoly.Graphics.Add(graphic);
}
//Clear the Graphics Layer, which will be used to draw the points selected
GraphicsLayer selectionGraphicslayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
selectionGraphicslayer.ClearGraphics();
//Begin Query of Points Layer
QueryTask queryTask = new QueryTask((Layers.SelectedItem as FeatureLayer).Url);
queryTask.ExecuteCompleted += QuerySpa_ExecuteCompleted;
queryTask.Failed += QuerySpa_Failed;
Query query = new ESRI.ArcGIS.Client.Tasks.Query();
query.OutFields.Add("*");
//Query Point Layer Geometry with Poly layer Geometry
query.Geometry = graphicsLayerModPoly.FullExtent;
// Return geometry with result features
query.ReturnGeometry = true;
queryTask.ExecuteAsync(query);
}
private void QuerySpa_ExecuteCompleted(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
{
FeatureSet featureSet = args.FeatureSet;
if (featureSet == null || featureSet.Features.Count < 1)
{
MessageBox.Show("No features retured from query");
return;
}
GraphicsLayer graphicsLayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
if (featureSet != null && featureSet.Features.Count > 0)
// ResultsDisplay.Visibility = Visibility.Visible;
{
foreach (Graphic feature in featureSet.Features)
{
switch (featureSet.GeometryType.ToString())
{
case "Polygon":
feature.Symbol = LayoutRoot.Resources["ResultsFillSymbol"] as FillSymbol;
break;
case "Polyline":
feature.Symbol = LayoutRoot.Resources["CustomGrowLineSymbol"] as LineSymbol;
break;
case "Point":
feature.Symbol = LayoutRoot.Resources["ResultsMarkerSymbol"] as SimpleMarkerSymbol;
break;
}
graphicsLayer.Graphics.Insert(0, feature);
}
ResultsDisplay.IsExpanded = true;
}
}
private void QuerySpa_Failed(object sender, TaskFailedEventArgs args)
{
MessageBox.Show("Query failed: " + args.Error);
}
private void GeometryService_RelationCompleted(object sender, RelationEventArgs args)
{
List<GeometryRelationPair> results = args.Results;
foreach (GeometryRelationPair pair in results)
{
?????????????????????????????????????????????
}
}
private void GeometryService_RelationCompleted(object sender, RelationEventArgs args)
{
GraphicsLayer graphicsLayer = Map.Layers["MySelectionGraphicsLayer"] as GraphicsLayer;
graphicsLayer.ClearGraphics();
List<GeometryRelationPair> results = args.Results;
foreach (GeometryRelationPair pair in results)
{
Graphic graphic = new Graphic();
graphic.Geometry = pointLayer.Graphics[pair.Graphic1Index].Geometry;
//this lines gives the error -Property or indexer 'ESRI.ArcGIS.Client.Graphic.Attributes' cannot be assigned to -- it is read only .. HOW CAN I SEND BACK THE FIELDS
// graphic.Attributes.Add("*", pointLayer.Graphics[pair.Graphic1Index].Attributes);
graphic.Symbol = LayoutRoot.Resources["ResultsMarkerSymbol"] as SimpleMarkerSymbol;
graphicsLayer.Graphics.Insert(0, graphic);
}
ResultsDisplay.IsExpanded = true;
}