private void ExecuteButton_Click(object sender, RoutedEventArgs e) { GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer; graphicsLayer.Graphics.Clear(); FindTask findTask = new FindTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"); findTask.Failed += FindTask_Failed; FindParameters findParameters = new FindParameters(); // Layer ids to search findParameters.LayerIds.AddRange(new int[] { 0,1,2 }); // Fields in layers to search findParameters.SearchFields.AddRange(new string[] { "CITY_NAME", "NAME", "SYSTEM", "STATE_ABBR", "STATE_NAME" }); // Return features in map's spatial reference findParameters.SpatialReference = MyMap.SpatialReference; // Bind data grid to find results. Bind to the LastResult property which returns a list // of FindResult instances. When LastResult is updated, the ItemsSource property on the // will update. Binding resultFeaturesBinding = new Binding("LastResult"); resultFeaturesBinding.Source = findTask; FindDetailsDataGrid.SetBinding(DataGrid.ItemsSourceProperty, resultFeaturesBinding); findParameters.SearchText = FindText.Text; findTask.ExecuteAsync(findParameters); // Since binding to DataGrid, handling the ExecuteComplete event is not necessary. }
private void ExecuteButton_Click(object sender, RoutedEventArgs e) { GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer; graphicsLayer.ClearGraphics(); FindTask findTask = new FindTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"); findTask.Failed += FindTask_Failed; FindParameters findParameters = new FindParameters(); // Layer ids to search findParameters.LayerIds.AddRange(new int[] { 0, 1, 2 }); // Fields in layers to search findParameters.SearchFields.AddRange(new string[] { "CITY_NAME", "NAME", "SYSTEM", "STATE_ABBR", "STATE_NAME" }); // Return features in map's spatial reference findParameters.SpatialReference = MyMap.SpatialReference; // Bind data grid to find results. Bind to the LastResult property which returns a list // of FindResult instances. When LastResult is updated, the ItemsSource property on the // will update. Binding resultFeaturesBinding = new Binding("LastResult"); resultFeaturesBinding.Source = findTask; FindDetailsDataGrid.SetBinding(DataGrid.ItemsSourceProperty, resultFeaturesBinding); findParameters.SearchText = FindText.Text; findTask.ExecuteAsync(findParameters); // Since binding to DataGrid, handling the ExecuteComplete event is not necessary. }
/// <summary> /// Searches asynchronously for places matching the specified text. /// </summary> public Task<List<Graphic>> FindAsync(string searchText) { FindParameters findParams = new FindParameters(); findParams.LayerIds.AddRange(new int[] { 0 }); // cities layer findParams.SearchFields.AddRange(new string[] { "CITY_NAME" }); findParams.SpatialReference = new SpatialReference(4326); findParams.SearchText = searchText; FindTask findTask = new FindTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"); var tcs = new TaskCompletionSource<List<Graphic>>(); findTask.ExecuteCompleted += (sender, e) => { List<Graphic> graphics = new List<Graphic>(); foreach (var result in e.FindResults) graphics.Add(result.Feature); tcs.TrySetResult(graphics); }; findTask.Failed += (sender, e) => { tcs.TrySetResult(new List<Graphic>()); }; findTask.ExecuteAsync(findParams); return tcs.Task; }
/// <summary> /// Searches asynchronously for places matching the specified text. /// </summary> public Task <List <Graphic> > FindAsync(string searchText) { FindParameters findParams = new FindParameters(); findParams.LayerIds.AddRange(new int[] { 0 }); // cities layer findParams.SearchFields.AddRange(new string[] { "CITY_NAME" }); findParams.SpatialReference = new SpatialReference(4326); findParams.SearchText = searchText; FindTask findTask = new FindTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"); var tcs = new TaskCompletionSource <List <Graphic> >(); findTask.ExecuteCompleted += (sender, e) => { List <Graphic> graphics = new List <Graphic>(); foreach (var result in e.FindResults) { graphics.Add(result.Feature); } tcs.TrySetResult(graphics); }; findTask.Failed += (sender, e) => { tcs.TrySetResult(new List <Graphic>()); }; findTask.ExecuteAsync(findParams); return(tcs.Task); }
public async void Execute(object parameter) { var url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer"; var findTask = new FindTask(new Uri(url)); var findParameters = new FindParameters(); findParameters.LayerIDs.Add(0); // Cities findParameters.LayerIDs.Add(3); // Counties findParameters.LayerIDs.Add(2); // States findParameters.SearchFields.Add("name"); findParameters.SearchFields.Add("areaname"); findParameters.SearchFields.Add("state_name"); findParameters.ReturnGeometry = true; //findParameters.SpatialReference = MyMapView.SpatialReference; findParameters.SearchText = (string)parameter; findParameters.Contains = true; FindResult findResult = await findTask.ExecuteAsync(findParameters); var foundCities = 0; var foundCounties = 0; var foundStates = 0; // Loop thru results; count the matches found in each layer foreach (FindItem findItem in findResult.Results) { switch (findItem.LayerID) { case 0: // Cities foundCities++; break; case 3: // Counties foundCounties++; break; case 2: // States foundStates++; break; } } // Report the number of matches for each layer var msg = string.Format("Found {0} cities, {1} counties, and {2} states containing '" + (string)parameter + "' in a Name attribute", foundCities, foundCounties, foundStates); MessageBox.Show(msg); vm.SearchResults = findResult.Results; // Bind the results to a DataGrid control on the page // MyDataGrid.ItemsSource = findResult.Results; }
private async void Button_Click(object sender, RoutedEventArgs e) { var url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer"; var findTask = new FindTask(new Uri(url)); var findParameters = new FindParameters(); findParameters.LayerIDs.Add(0); // Cities findParameters.LayerIDs.Add(3); // Counties findParameters.LayerIDs.Add(2); // States findParameters.SearchFields.Add("name"); findParameters.SearchFields.Add("areaname"); findParameters.SearchFields.Add("state_name"); findParameters.ReturnGeometry = true; findParameters.SpatialReference = MyMapView.SpatialReference; findParameters.SearchText = SearchTextBox.Text; findParameters.Contains = true; FindResult findResult = await findTask.ExecuteAsync(findParameters); var foundCities = 0; var foundCounties = 0; var foundStates = 0; // Loop thru results; count the matches found in each layer foreach (FindItem findItem in findResult.Results) { switch (findItem.LayerID) { case 0: // Cities foundCities++; break; case 3: // Counties foundCounties++; break; case 2: // States foundStates++; break; } } // Report the number of matches for each layer var msg = string.Format("Found {0} cities, {1} counties, and {2} states containing '" + SearchTextBox.Text + "' in a Name attribute", foundCities, foundCounties, foundStates); MessageBox.Show(msg); // Bind the results to a DataGrid control on the page MyDataGrid.ItemsSource = findResult.Results; }
public Task <FindResult> DoFind(string serviceId, Geometry geometry, string fields, string value) { LayerObject lo = null; foreach (var t in ConfigUtil.DynamicLayer) { if (serviceId != t.Id) { continue; } lo = t; } if (lo == null) { return(null); } var findTask = new FindTask(lo.Uri); if (lo.Token != null) { findTask.Token = lo.Token; } //初始化FindParameters参数 FindParameters findParameters = new FindParameters(); string[] Layers = lo.Layers.Split('、'); if (Layers != null && Layers.Length > 0) { foreach (var item in Layers) { var layerId = lo.GetLayerId(item); if (layerId != null) { findParameters.LayerIDs.Add(Convert.ToInt16(layerId)); //查找的图层 } } } findParameters.SearchFields.Add(fields); //查找的字段范围 findParameters.ReturnGeometry = true; findParameters.Contains = false; findParameters.SearchText = value; //查找的“属性值” //异步执行 return(findTask.ExecuteAsync(findParameters)); }
// Find map service items with entered information in given fields private async void FindButton_Click(object sender, RoutedEventArgs e) { try { progress.Visibility = Visibility.Visible; resultsGrid.Visibility = Visibility.Collapsed; resultsGrid.ItemsSource = null; _graphicsOverlay.Graphics.Clear(); FindTask findTask = new FindTask( new Uri("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer")); var param = new FindParameters() { LayerIDs = new List <int> { 0, 1, 2 }, SearchFields = new List <string> { "CITY_NAME", "NAME", "SYSTEM", "STATE_ABBR", "STATE_NAME" }, ReturnGeometry = true, SpatialReference = MyMapView.SpatialReference, SearchText = txtFind.Text }; var findResults = await findTask.ExecuteAsync(param); if (findResults != null && findResults.Results.Count > 0) { resultsGrid.ItemsSource = findResults.Results; resultsGrid.Visibility = Visibility.Visible; } } catch (Exception ex) { MessageBox.Show(ex.Message, "Find Sample"); } finally { progress.Visibility = Visibility.Collapsed; } }
// Find map service items with entered information in given fields private async void FindButton_Click(object sender, RoutedEventArgs e) { try { progress.Visibility = Visibility.Visible; resultsGrid.Visibility = Visibility.Collapsed; resultsGrid.ItemsSource = null; _graphicsLayer.Graphics.Clear(); FindTask findTask = new FindTask( new Uri("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer")); var param = new FindParameters() { LayerIDs = new int[] { 0, 1, 2 }, SearchFields = new string[] { "CITY_NAME", "NAME", "SYSTEM", "STATE_ABBR", "STATE_NAME" }, ReturnGeometry = true, SpatialReference = mapView.SpatialReference, SearchText = txtFind.Text }; var findResults = await findTask.ExecuteAsync(param); if (findResults != null && findResults.Results.Count > 0) { resultsGrid.ItemsSource = findResults.Results; resultsGrid.Visibility = Visibility.Visible; } } catch (Exception ex) { var _ = new MessageDialog(ex.Message, "Sample Error").ShowAsync(); } finally { progress.Visibility = Visibility.Collapsed; } }
public async void Search(int wkid) { var findTask = new FindTask(new System.Uri(this.USAUri)); var findParameters = new FindParameters(); findParameters.LayerIDs.Add(0); // Cities findParameters.LayerIDs.Add(3); // Counties findParameters.LayerIDs.Add(2); // States findParameters.SearchFields.Add("name"); findParameters.SearchFields.Add("areaname"); findParameters.SearchFields.Add("state_name"); findParameters.ReturnGeometry = true; SpatialReference sr = new SpatialReference(wkid); findParameters.SpatialReference = sr; findParameters.SearchText = this.SearchText; findParameters.Contains = true; FindResult findResult = await findTask.ExecuteAsync(findParameters); var foundCities = 0; var foundCounties = 0; var foundStates = 0; // Loop thru results; count the matches found in each layer foreach (FindItem findItem in findResult.Results) { switch (findItem.LayerID) { case 0: // Cities foundCities++; break; case 3: // Counties foundCounties++; break; case 2: // States foundStates++; break; } } // Report the number of matches for each layer var msg = string.Format("Found {0} cities, {1} counties, and {2} states containing '" + this.SearchText + "' in a Name attribute", foundCities, foundCounties, foundStates); // Bind the results to a DataGrid control on the page IReadOnlyList<FindItem> temp = findResult.Results; ObservableCollection<FindItem> obsCollection = new ObservableCollection<FindItem>(); foreach (FindItem item in temp) { obsCollection.Add(item); } this.GridDataResults = obsCollection; // show message Messenger.Default.Send<NotificationMessage>(new NotificationMessage(msg)); }
public async void Search(int wkid) { var findTask = new FindTask(new System.Uri(this.USAUri)); var findParameters = new FindParameters(); findParameters.LayerIDs.Add(0); // Cities findParameters.LayerIDs.Add(3); // Counties findParameters.LayerIDs.Add(2); // States findParameters.SearchFields.Add("name"); findParameters.SearchFields.Add("areaname"); findParameters.SearchFields.Add("state_name"); findParameters.ReturnGeometry = true; SpatialReference sr = new SpatialReference(wkid); findParameters.SpatialReference = sr; findParameters.SearchText = this.SearchText; findParameters.Contains = true; FindResult findResult = await findTask.ExecuteAsync(findParameters); var foundCities = 0; var foundCounties = 0; var foundStates = 0; // Loop thru results; count the matches found in each layer foreach (FindItem findItem in findResult.Results) { switch (findItem.LayerID) { case 0: // Cities foundCities++; break; case 3: // Counties foundCounties++; break; case 2: // States foundStates++; break; } } // Report the number of matches for each layer var msg = string.Format("Found {0} cities, {1} counties, and {2} states containing '" + this.SearchText + "' in a Name attribute", foundCities, foundCounties, foundStates); // Bind the results to a DataGrid control on the page IReadOnlyList <FindItem> temp = findResult.Results; ObservableCollection <FindItem> obsCollection = new ObservableCollection <FindItem>(); foreach (FindItem item in temp) { obsCollection.Add(item); } this.GridDataResults = obsCollection; // show message Messenger.Default.Send <NotificationMessage>(new NotificationMessage(msg)); }
public async void Search(int wkid) { var url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer"; var findTask = new FindTask(new System.Uri(url)); var findParameters = new FindParameters(); findParameters.LayerIDs.Add(0); // Cities findParameters.LayerIDs.Add(3); // Counties findParameters.LayerIDs.Add(2); // States findParameters.SearchFields.Add("name"); findParameters.SearchFields.Add("areaname"); findParameters.SearchFields.Add("state_name"); findParameters.ReturnGeometry = true; SpatialReference sr = new SpatialReference(wkid); findParameters.SpatialReference = sr; findParameters.SearchText = this.SearchText; findParameters.Contains = true; FindResult findResult = await findTask.ExecuteAsync(findParameters); var foundCities = 0; var foundCounties = 0; var foundStates = 0; // Loop thru results; count the matches found in each layer foreach (FindItem findItem in findResult.Results) { switch (findItem.LayerID) { case 0: // Cities foundCities++; break; case 3: // Counties foundCounties++; break; case 2: // States foundStates++; break; } } // Report the number of matches for each layer var msg = string.Format("Found {0} cities, {1} counties, and {2} states containing '" + this.SearchText + "' in a Name attribute", foundCities, foundCounties, foundStates); // Bind the results to a DataGrid control on the page IReadOnlyList <FindItem> temp = findResult.Results; ObservableCollection <FindItem> obsCollection = new ObservableCollection <FindItem>(); foreach (FindItem item in temp) { obsCollection.Add(item); } this.GridDataResults = obsCollection; System.Diagnostics.Debug.WriteLine(msg); }
public async void Search(int wkid) { var url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer"; var findTask = new FindTask(new System.Uri(url)); var findParameters = new FindParameters(); findParameters.LayerIDs.Add(0); // Cities findParameters.LayerIDs.Add(3); // Counties findParameters.LayerIDs.Add(2); // States findParameters.SearchFields.Add("name"); findParameters.SearchFields.Add("areaname"); findParameters.SearchFields.Add("state_name"); findParameters.ReturnGeometry = true; SpatialReference sr = new SpatialReference(wkid); findParameters.SpatialReference = sr; findParameters.SearchText = this.SearchText; findParameters.Contains = true; FindResult findResult = await findTask.ExecuteAsync(findParameters); var foundCities = 0; var foundCounties = 0; var foundStates = 0; // Loop thru results; count the matches found in each layer foreach (FindItem findItem in findResult.Results) { switch (findItem.LayerID) { case 0: // Cities foundCities++; break; case 3: // Counties foundCounties++; break; case 2: // States foundStates++; break; } } // Report the number of matches for each layer var msg = string.Format("Found {0} cities, {1} counties, and {2} states containing '" + this.SearchText + "' in a Name attribute", foundCities, foundCounties, foundStates); // Bind the results to a DataGrid control on the page IReadOnlyList<FindItem> temp = findResult.Results; ObservableCollection<FindItem> obsCollection = new ObservableCollection<FindItem>(); foreach (FindItem item in temp) { obsCollection.Add(item); } this.GridDataResults = obsCollection; System.Diagnostics.Debug.WriteLine(msg); }