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; }