Exemple #1
0
        public async Task <string> GetAddressFromLatLong(double lat, double lon)
        {
            async Task <string> getAddressFromCords()
            {
                IGeocoder googleGeoCoder = new GoogleGeocoder()
                {
                    ApiKey = Config.MappingConfig.GoogleMapsApiKey
                };
                IGeocoder bingGeoCoder = new BingMapsGeocoder(Config.MappingConfig.BingMapsApiKey);

                string address = null;

                try
                {
                    var addresses = await googleGeoCoder.ReverseGeocodeAsync(lat, lon);

                    if (addresses != null && addresses.Any())
                    {
                        address = addresses.First().FormattedAddress;
                    }
                }
                catch { /* Don't report on GeoLocation failures */ }

                if (string.IsNullOrWhiteSpace(address))
                {
                    try
                    {
                        var addressGeo = GetAddressFromLatLonLocationIQ(lat.ToString(), lon.ToString());

                        if (!String.IsNullOrWhiteSpace(addressGeo))
                        {
                            address = addressGeo;
                        }
                    }
                    catch { /* Don't report on GeoLocation failures */ }
                }

                if (string.IsNullOrWhiteSpace(address))
                {
                    try
                    {
                        var addresses = await bingGeoCoder.ReverseGeocodeAsync(lat, lon);

                        if (addresses != null && addresses.Count() > 0)
                        {
                            address = addresses.First().FormattedAddress;
                        }
                    }
                    catch { /* Don't report on GeoLocation failures */ }
                }
                return(address);
            }

            return(await _cacheProvider.RetrieveAsync <string>(string.Format(ReverseCacheKey, string.Format("{0} {1}", lat, lon).GetHashCode()), getAddressFromCords, CacheLength));
        }
Exemple #2
0
        public async Task <IEnumerable <Essentials.Placemark> > GetPlacemarksAsync(Essentials.Location location)
        {
            var bingAddresses = await Geocoder.ReverseGeocodeAsync(new Geocoding.Location(location.Latitude, location.Longitude));

            var placeMarks = bingAddresses.Select(x =>
                                                  new Essentials.Placemark
            {
                AdminArea    = x.AdminDistrict,
                CountryName  = x.CountryRegion,
                Locality     = x.Locality,
                PostalCode   = x.PostalCode,
                FeatureName  = "",
                Location     = new Essentials.Location(x.Coordinates.Latitude, x.Coordinates.Longitude),
                CountryCode  = "",
                SubAdminArea = x.AdminDistrict2,
                SubLocality  = x.Neighborhood,
                Thoroughfare = x.AddressLine
            });

            return(placeMarks);
        }
Exemple #3
0
 //https://github.com/chadly/Geocoding.net/issues/8
 public async Task CanReverseGeocodeIssue8()
 {
     BingAddress[] addresses = (await geoCoder.ReverseGeocodeAsync(38.8976777, -77.036517)).ToArray();
     Assert.NotEmpty(addresses);
 }
 public async Task <IEnumerable <BingAddress> > Reverse([FromQuery] double latitude, [FromQuery] double longitude)
 {
     return(await _geocoder.ReverseGeocodeAsync(latitude, longitude));
 }