コード例 #1
0
        private async Task <GeoAddress[]> SearchUsingNameAsync(string searchQuery, string currentLanguage, double?pickupLatitude, double?pickupLongitude)
        {
            if (searchQuery == null)
            {
                return(null);
            }

            var filter = _appSettings.Data.GeoLoc.SearchFilter;

            var query = filter.HasValue()
                ? string.Format(filter, searchQuery)
                : searchQuery;

            var searchRadius = _appSettings.Data.GeoLoc.SearchRadius <= 0 ? 45000 : _appSettings.Data.GeoLoc.SearchRadius;

            #if DEBUG
            Console.WriteLine(string.Format("Geocoding.SearchUsingNameAsync with query: {0} radius: {1}", query, searchRadius));
            #endif

            var addresses = await _mapApi.GeocodeAddressAsync(query, currentLanguage, pickupLatitude, pickupLongitude, searchRadius);

            #if DEBUG
            Console.WriteLine("Geocoding.SearchUsingNameAsync results");
            foreach (var address in addresses)
            {
                Console.WriteLine(string.Format("    {0}", address.FullAddress));
            }
            #endif

            return(FilterGeoCodingResults(addresses));
        }
コード例 #2
0
        public Task <GeoAddress[]> GeocodeAddressAsync(string query, string currentLanguage, double?pickupLatitude, double?pickupLongitude, double searchRadiusInMeters)
        {
            var client   = GetClient(PlacesAutoCompleteServiceUrl);
            var resource = GetPlacesAutocompleteSearchRequest(pickupLatitude, pickupLongitude, query, currentLanguage, (int)searchRadiusInMeters, "address");

            #if DEBUG
            Console.WriteLine(PlacesAutoCompleteServiceUrl + resource);
            #endif

            return(HandleGoogleResultAsync(() => client.GetAsync <PredictionResponse>(resource),
                                           x => ConvertPredictionToAddresses(x.predictions).ToArray(), new GeoAddress[0],
                                           () => _fallbackGeocoder.GeocodeAddressAsync(query, currentLanguage, pickupLatitude, pickupLongitude, searchRadiusInMeters)));
        }