예제 #1
0
        public async Task <SuggestResponse <Address> > FindAddress(string query,
                                                                   CancellationToken cancellationToken = default)
        {
            var request = new FindAddressRequest(query);

            return(await FindAddress(request, cancellationToken));
        }
예제 #2
0
        public void FindAddressLanguageTest()
        {
            var request = new FindAddressRequest("94b67f2f-f0f2-4a56-983b-90f0cec1d789")
            {
                language = "en"
            };
            var response = api.FindAddress(request);
            var address  = response.suggestions[0].data;

            Assert.Equal("Samara", address.city);
            Assert.Equal("Metallurgov", address.street);
        }
예제 #3
0
 public async Task <SuggestResponse <Address> > FindAddress(FindAddressRequest request)
 {
     return(await Execute <SuggestResponse <Address> >(method : SuggestionsMethod.Find, entity : SuggestionsEntity.Address, request : request));
 }
예제 #4
0
        public async Task <SuggestResponse <Address> > FindAddress(string query)
        {
            var request = new FindAddressRequest(query);

            return(await FindAddress(request));
        }
예제 #5
0
        public GpsPosition FindGpsPosition(Fotofly.Address addressToLookup, bool useCache)
        {
            GpsPosition returnValue = new GpsPosition();

            // Check Resolver Cache
            if (this.resolverCache != null && useCache)
            {
                returnValue = this.resolverCache.FindGpsPosition(addressToLookup);

                if (returnValue != null && returnValue.IsValidCoordinate)
                {
                    return(returnValue);
                }
            }

            BingMapsDataSources dataSource = this.LiveMapsDataSource(addressToLookup.Country);

            if (this.failedLookups.Contains(addressToLookup.HierarchicalName))
            {
                Debug.WriteLine("BingMapsResolver: " + addressToLookup.HierarchicalName + ": Address skipped (Previous Failed Lookup)");
            }
            else if (dataSource == BingMapsDataSources.World)
            {
                Debug.WriteLine("BingMapsResolver: " + addressToLookup.HierarchicalName + ": Address skipped (World Maps does not support Reverse Geotagging)");
            }
            else
            {
                // Set up the address
                BingMaps.Address address = new BingMaps.Address();
                address.AddressLine   = addressToLookup.AddressLine;
                address.PostalCode    = string.Empty;
                address.PrimaryCity   = addressToLookup.City;
                address.Subdivision   = addressToLookup.Region;
                address.CountryRegion = addressToLookup.Country;

                if (string.IsNullOrEmpty(addressToLookup.City))
                {
                    address.PrimaryCity = addressToLookup.Region;
                    address.Subdivision = string.Empty;
                }

                // Set up the specification for the address
                // Set up the specification object.
                FindAddressSpecification findAddressSpec = new FindAddressSpecification();
                findAddressSpec.InputAddress = address;

                // More info: http://msdn2.microsoft.com/en-us/library/ms982198.aspx and http://msdn2.microsoft.com/en-us/library/aa493004.aspx
                findAddressSpec.DataSourceName = "MapPoint." + dataSource.ToString();

                // Set the find options. Allow more return values by decreasing
                // the count of the ThresholdScore option.
                // Also, limit the number of results returned to 20.
                FindOptions myFindOptions = new FindOptions();
                myFindOptions.ThresholdScore   = 0.5;
                myFindOptions.Range            = new FindRange();
                myFindOptions.Range.StartIndex = 0;
                myFindOptions.Range.Count      = 1;
                findAddressSpec.Options        = myFindOptions;

                FindAddressRequest addressRequest = new FindAddressRequest();
                addressRequest.specification = findAddressSpec;

                // Create a FindResults object to store the results of the FindAddress request.
                FindResults  myFindResults;
                FindResult[] myResults;

                try
                {
                    // Get the results and return them if there are any.
                    myFindResults = this.findService.FindAddress(null, null, findAddressSpec);
                }
                catch (Exception e)
                {
                    Debug.WriteLine("BingMapsResolver: " + addressToLookup.HierarchicalName + ": Call failed, error = " + e.ToString());

                    returnValue   = new GpsPosition();
                    myFindResults = null;
                }

                if (myFindResults != null)
                {
                    myResults = myFindResults.Results;

                    if (myResults != null && myResults.Length != 0)
                    {
                        returnValue = new GpsPosition();
                        returnValue.Latitude.Numeric  = myResults[0].FoundLocation.LatLong.Latitude;
                        returnValue.Longitude.Numeric = myResults[0].FoundLocation.LatLong.Longitude;
                        returnValue.Source            = BingMapsResolver.SourceName;

                        Debug.WriteLine("BingMapsResolver: " + addressToLookup.HierarchicalName + ": LatLong retrieved");
                    }
                    else
                    {
                        // Add to Failure to cache
                        if (this.resolverCache != null)
                        {
                            this.resolverCache.AddToForwardFailedRecords(addressToLookup);
                        }

                        // Add the failed resolution to the avoid list
                        this.failedLookups.Add(addressToLookup.HierarchicalName);

                        Debug.WriteLine("BingMapsResolver: " + addressToLookup.HierarchicalName + ": Address not found");

                        returnValue = new GpsPosition();
                    }
                }
            }

            return(returnValue);
        }
예제 #6
0
        public SuggestResponse <Address> FindAddress(string query)
        {
            var request = new FindAddressRequest(query);

            return(FindAddress(request));
        }
예제 #7
0
 public async Task <SuggestResponse <Address> > FindAddress(FindAddressRequest request,
                                                            CancellationToken cancellationToken = default)
 {
     return(await Execute <SuggestResponse <Address> >(method : SuggestionsMethod.Find,
                                                       entity : SuggestionsEntity.Address, request : request, cancellationToken : cancellationToken));
 }