LocalGeocodeService.GetServiceAsync("E:\\2_Prototype 1\\CompositeLocator.gcpk", "CompositeLocator", (gs) => { if (gs.Error != null) { MessageBox.Show(gs.Error.Message); } if (gs.Status == LocalServiceStatus.Running) { _localGeocodeService = gs; IsBusy = false; } }); private void SearchTextBox_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Return) { IsBusy = true; string searchText = SearchTextBox.Text; Locator locatorTask = new Locator(_localGeocodeService.UrlGeocodeService); locatorTask.AddressToLocationsCompleted += (object sender1, AddressToLocationsEventArgs args) => { if (args.Results.Count > 0) { AddressCandidate bestCandidate = args.Results[0]; foreach (AddressCandidate candidate in args.Results) bestCandidate = (candidate.Score > bestCandidate.Score) ? candidate : bestCandidate; MapPoint geographicPoint = new MapPoint(bestCandidate.Location.X, bestCandidate.Location.Y, new SpatialReference(4326)); Graphic graphic = new Graphic() { Geometry = geographicPoint, Symbol = SearchBarGrid.Resources["FlagMarkerSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol, }; _locationGraphicsLayer.Graphics.Clear(); _locationGraphicsLayer.Graphics.Add(graphic); IsBusy = false; } else { MessageBox.Show("No results found"); IsBusy = false; } }; locatorTask.Failed += (s2, e2) => { MessageBox.Show("Geocode failed with error: " + e2.Error.Message); }; AddressToLocationsParameters addressParameters = new AddressToLocationsParameters(); Dictionary<string, string> address = addressParameters.Address; address.Add("Single Line Input", searchText); locatorTask.AddressToLocationsAsync(addressParameters); }
Solved! Go to Solution.