/// <summary>
        /// Do a search for the contents of the specified URL
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static CandidateResponse SearchFor(string text, int numResults = 2)
        {
            WebClient wc = new WebClient();

            wc.Headers.Add("user-agent", "GeocodeExample");
            wc.Headers.Add("referer", "GeocodeExample");
            wc.Encoding = System.Text.Encoding.UTF8;

            CandidateResponse geocodeResult = null;

            using (StreamReader sr = new StreamReader(wc.OpenRead(new UCSamples.Geocode.GeocodeURI(text, numResults).Uri),
                                                      System.Text.Encoding.UTF8, true)) {
                string response = sr.ReadToEnd();
                if (ResponseIsError(response))
                {
                    //throw
                    throw new System.ApplicationException(response);
                }
                geocodeResult = ObjectSerialization.JsonToObject <CandidateResponse>(response);
            }
            return(geocodeResult);
        }
예제 #2
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            // get the current module to access helper method
            ForTheUcModule module = ForTheUcModule.Current;

            // remove any existing graphics
            MapView mapView = ForTheUcModule.ActiveMapView;

            GeocodeUtils.RemoveFromMapOverlay(mapView);

            try
            {
                // initiate the search
                CandidateResponse results = GeocodeUtils.SearchFor(this.SearchText.Text, 1);
                if (results.OrderedResults.Count > 0)
                {
                    // add a point graphic overlay
                    GeocodeUtils.UpdateMapOverlay(results.OrderedResults[0].ToPointN(), mapView);
                    // zoom to the location
                    await GeocodeUtils.ZoomToLocation(results.OrderedResults[0].Extent);

                    // add the search results to the dialog window
                    this.LastSearch.Text = string.Format("Last Match: {0}", results.OrderedResults[0].CandidateDetails);
                }
                else
                {
                    ArcGIS.Desktop.Internal.Framework.DialogManager.ShowMessageBox(
                        string.Format("No results returned for {0}", this.SearchText.Text), "GeocodeExample");
                }
            }
            catch (Exception ex)
            {
                string errorName = "Search Error";
                System.Diagnostics.Trace.WriteLine(string.Format("{0}: {1}", errorName, ex.ToString()));
                ArcGIS.Desktop.Internal.Framework.DialogManager.ShowMessageBox(errorName, this.SearchText.Text);
            }
        }