Ejemplo n.º 1
0
        /// <summary>
        /// Calls the Google Places API to retrieve autofill suggestions
        /// </summary>
        /// <returns>The places.</returns>
        /// <param name="newTextValue">New text value.</param>
        /// <param name="apiKey">The API key</param>
        /// <param name="bias">The location bias (can be NULL)</param>
        /// <param name="components">The components (can be NULL)</param>
        /// <param name="type">Filter for the returning types </param>
        /// <param name="language">The language of the results</param>
        public static async Task <AutoCompleteResult> GetPlaces(string newTextValue, string apiKey, LocationBias bias, Components components, PlaceType type, GoogleAPILanguage language)
        {
            if (string.IsNullOrEmpty(apiKey))
            {
                throw new Exception("You have not assigned a Google API key to PlacesBar");
            }

            try
            {
                var requestURI = CreatePredictionsUri(newTextValue, apiKey, bias, components, type, language);
                var client     = new HttpClient();
                var request    = new HttpRequestMessage(HttpMethod.Get, requestURI);
                var response   = await client.SendAsync(request);

                if (!response.IsSuccessStatusCode)
                {
                    Debug.WriteLine("PlacesBar HTTP request denied.");
                    return(null);
                }

                var result = await response.Content.ReadAsStringAsync();

                if (result == "ERROR")
                {
                    Debug.WriteLine("PlacesSearchBar Google Places API returned ERROR");
                    return(null);
                }

                return(AutoCompleteResult.FromJson(JObject.Parse(result)));
            }
            catch (Exception ex)
            {
                Debug.WriteLine("PlacesBar HTTP issue: {0} {1}", ex.Message, ex);
                return(null);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Creates the predictions URI.
        /// </summary>
        /// <returns>The predictions URI.</returns>
        /// <param name="newTextValue">New text value.</param>
        /// <param name="apiKey">The API key</param>
        /// <param name="bias">The location bias (can be NULL)</param>
        /// <param name="components">The components (can be NULL)</param>
        /// <param name="type">Filter for the returning types </param>
        /// <param name="language">The language of the results</param>
        private static string CreatePredictionsUri(string newTextValue, string apiKey, LocationBias bias, Components components, PlaceType type, GoogleAPILanguage language)
        {
            var url   = "https://maps.googleapis.com/maps/api/place/autocomplete/json";
            var input = Uri.EscapeUriString(newTextValue);
            var pType = PlaceTypeValue(type);

            var constructedUrl = $"{url}?input={input}&types={pType}&key={apiKey}";

            if (bias != null)
            {
                constructedUrl = constructedUrl + bias;
            }

            if (components != null)
            {
                constructedUrl += components;
            }

            if (language != GoogleAPILanguage.Unset)
            {
                constructedUrl += "&Language=" + GoogleAPILanguageHelper.ToAPIString(language);
            }

            return(constructedUrl);
        }
Ejemplo n.º 3
0
        public static string ToAPIString(GoogleAPILanguage lng)
        {
            // https://developers.google.com/maps/faq#languagesupport

            switch (lng)
            {
            case GoogleAPILanguage.Afrikaans:               return("af");

            case GoogleAPILanguage.Albanian:                return("sq");

            case GoogleAPILanguage.Amharic:                 return("am");

            case GoogleAPILanguage.Arabic:                  return("ar");

            case GoogleAPILanguage.Armenian:                return("ar");

            case GoogleAPILanguage.Azerbaijani:             return("az");

            case GoogleAPILanguage.Basque:                  return("eu");

            case GoogleAPILanguage.Belarusian:              return("be");

            case GoogleAPILanguage.Bengali:                 return("bn");

            case GoogleAPILanguage.Bosnian:                 return("bs");

            case GoogleAPILanguage.Bulgarian:               return("bg");

            case GoogleAPILanguage.Burmese:                 return("my");

            case GoogleAPILanguage.Catalan:                 return("ca");

            case GoogleAPILanguage.Chinese:                 return("zh");

            case GoogleAPILanguage.ChineseSimplified:       return("zh-CN");

            case GoogleAPILanguage.ChineseHongKong:         return("zh-HK");

            case GoogleAPILanguage.ChineseTraditional:      return("zh-TW");

            case GoogleAPILanguage.Croatian:                return("hr");

            case GoogleAPILanguage.Czech:                   return("cs");

            case GoogleAPILanguage.Danish:                  return("da");

            case GoogleAPILanguage.Dutch:                   return("nl");

            case GoogleAPILanguage.English:                 return("en");

            case GoogleAPILanguage.EnglishAustralian:       return("en-AU");

            case GoogleAPILanguage.EnglishGreatBritain:     return("en-GB");

            case GoogleAPILanguage.Estonian:                return("et");

            case GoogleAPILanguage.Farsi:                   return("fa");

            case GoogleAPILanguage.Finnish:                 return("fi");

            case GoogleAPILanguage.Filipino:                return("fil");

            case GoogleAPILanguage.French:                  return("fr");

            case GoogleAPILanguage.FrenchCanada:            return("fr-CA");

            case GoogleAPILanguage.Galician:                return("gl");

            case GoogleAPILanguage.Georgian:                return("ka");

            case GoogleAPILanguage.German:                  return("de");

            case GoogleAPILanguage.Greek:                   return("el");

            case GoogleAPILanguage.Gujarati:                return("gu");

            case GoogleAPILanguage.Hebrew:                  return("iw");

            case GoogleAPILanguage.Hindi:                   return("hi");

            case GoogleAPILanguage.Hungarian:               return("hu");

            case GoogleAPILanguage.Icelandic:               return("is");

            case GoogleAPILanguage.Indonesian:              return("id");

            case GoogleAPILanguage.Italian:                 return("it");

            case GoogleAPILanguage.Japanese:                return("ja");

            case GoogleAPILanguage.Kannada:                 return("kn");

            case GoogleAPILanguage.Kazakh:                  return("kk");

            case GoogleAPILanguage.Khmer:                   return("km");

            case GoogleAPILanguage.Korean:                  return("ko");

            case GoogleAPILanguage.Kyrgyz:                  return("ky");

            case GoogleAPILanguage.Lao:                     return("lo");

            case GoogleAPILanguage.Latvian:                 return("lv");

            case GoogleAPILanguage.Lithuanian:              return("lt");

            case GoogleAPILanguage.Macedonian:              return("mk");

            case GoogleAPILanguage.Malay:                   return("ms");

            case GoogleAPILanguage.Malayalam:               return("ml");

            case GoogleAPILanguage.Marathi:                 return("mr");

            case GoogleAPILanguage.Mongolian:               return("mn");

            case GoogleAPILanguage.Nepali:                  return("ne");

            case GoogleAPILanguage.Norwegian:               return("no");

            case GoogleAPILanguage.Polish:                  return("pl");

            case GoogleAPILanguage.Portuguese:              return("pt");

            case GoogleAPILanguage.PortugueseBrazil:        return("pt-BR");

            case GoogleAPILanguage.PortuguesePortugal:      return("pt-PT");

            case GoogleAPILanguage.Punjabi:                 return("pa");

            case GoogleAPILanguage.Romanian:                return("ro");

            case GoogleAPILanguage.Russian:                 return("ru");

            case GoogleAPILanguage.Serbian:                 return("sr");

            case GoogleAPILanguage.Sinhalese:               return("si");

            case GoogleAPILanguage.Slovak:                  return("sk");

            case GoogleAPILanguage.Slovenian:               return("sl");

            case GoogleAPILanguage.Spanish:                 return("es");

            case GoogleAPILanguage.SpanishLatinAmerica:     return("es-419");

            case GoogleAPILanguage.Swahili:                 return("sw");

            case GoogleAPILanguage.Swedish:                 return("sv");

            case GoogleAPILanguage.Tamil:                   return("ta");

            case GoogleAPILanguage.Telugu:                  return("te");

            case GoogleAPILanguage.Thai:                    return("th");

            case GoogleAPILanguage.Turkish:                 return("tr");

            case GoogleAPILanguage.Ukrainian:               return("uk");

            case GoogleAPILanguage.Urdu:                    return("ur");

            case GoogleAPILanguage.Uzbek:                   return("uz");

            case GoogleAPILanguage.Vietnamese:              return("vi");

            case GoogleAPILanguage.Zulu:                    return("zu");

            case GoogleAPILanguage.Unset:                   return("zu");

            default:                                        return("");
            }
        }