/// <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 ITask GenerateTask() { Queue <ITask> queuedTasks = new Queue <ITask>(); ITask compositeTask = new CompositeTask(queuedTasks); ITask findFood = new FindTask <Food>(_owningAgent, (target, food) => { // Called when food found. Create seek task. ITask seekFood = new SeekTask(_owningAgent, target, 3, () => { ITask intentTask = new IntentTask(_owningAgent, food, EIntent.EAT, () => { EnergyCompontent foodEnergy = food.TakeEnergy(new EnergyCompontent { EnergyType = EEnergyType.NOURISHMENT }); _owningAgent.GiveEnergy(new EnergyCompontent { EnergyType = EEnergyType.NOURISHMENT, KiloJoules = foodEnergy.KiloJoules }); }); queuedTasks.Enqueue(intentTask); }); queuedTasks.Enqueue(seekFood); }); queuedTasks.Enqueue(findFood); compositeTask.Start(); return(compositeTask); }
/// <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); }
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. }
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; }
/// <summary> /// 获取一个匹配数据 /// </summary> /// <param name="key">关键字</param> /// <param name="isValue">数据匹配器,禁止数据库与锁操作</param> /// <returns>匹配数据,失败返回null</returns> public ReturnValue <valueType> FirstOrDefault(keyType key, Func <valueType, bool> isValue) { if (isValue != null) { FindTask task = new FindTask(this, key, isValue); counter.SqlTable.AddQueue(task); return(task.Wait()); } return(ReturnType.ArgumentNull); }
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; }
/// <summary> /// 获取一个匹配数据 /// </summary> /// <param name="key">关键字</param> /// <param name="isValue">数据匹配器,禁止数据库与锁操作</param> /// <returns>匹配数据,失败返回null</returns> public valueType FirstOrDefault(keyType key, Func <valueType, bool> isValue) { if (isValue == null) { throw new ArgumentNullException(); } FindTask task = new FindTask(this, key, isValue); counter.SqlTable.AddQueue(task); return(task.Wait()); }
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)); }
public override void onCompletion <T1>(CountedCompleter <T1> caller) { if (Op.MustFindFirst) { for (FindTask <P_IN, P_OUT, O> child = leftChild, p = null; child != p; p = child, child = rightChild) { O result = child.LocalResult; if (result != null && Op.PresentPredicate.Test(result)) { LocalResult = result; FoundResult(result); break; } } } base.OnCompletion(caller); }
// 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 ITask Create(IAction action) { ITask task = null; if (taskDic.TryGetValue(action.ActionType, out task)) { return(task); } if (action.ActionType == ActionType.PageAction) { task = new PageTask(manager); } else if (action.ActionType == ActionType.BrowserAction) { task = new BrowserTask(manager); } else if (action.ActionType == ActionType.FindAction) { task = new FindTask(manager); } else if (action.ActionType == ActionType.MouseAction) { task = new MouseTask(manager); } else if (action.ActionType == ActionType.AttributeAction) { task = new AttributeTask(manager); } else if (action.ActionType == ActionType.ScrollAction) { task = new ScrollTask(manager); } else if (action.ActionType == ActionType.ClearDataAction) { task = new ClearDataTask(manager); } else if (action.ActionType == ActionType.WaitAction) { task = new WaitTask(manager); } else if (action.ActionType == ActionType.ClickAction) { task = new ClickTask(manager); } else if (action.ActionType == ActionType.KeyboardAction) { task = new KeyboardTask(manager); } else if (action.ActionType == ActionType.SendKeyAction) { task = new SendKeyTask(manager); } else if (action.ActionType == ActionType.ConditionAction) { task = new ConditionTask(manager); } else if (action.ActionType == ActionType.ClearHistoryAction) { task = new ClearHistoryTask(manager); } else if (action.ActionType == ActionType.TextAction) { task = new TextTask(manager); } else if (action.ActionType == ActionType.ScriptAction) { task = new ScriptTask(manager); } else if (action.ActionType == ActionType.PackageAction) { task = new PackageTask(manager); } taskDic.Add(action.ActionType, task); return(task); }
internal FindTask(FindTask <P_IN, P_OUT, O> parent, Spliterator <P_IN> spliterator) : base(parent, spliterator) { this.Op = parent.Op; }
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); }