Ejemplo n.º 1
0
        // Uses the Google API to resolve a post code (within the specified country)
        public static Coords?PostCodeToLongLat(string postcode, bool isUseApi)
        {
            if (isUseApi)
            {
                // Download the XML response from Google
                var        client          = new WebClient();
                var        encodedPostCode = HttpUtility.UrlEncode(postcode);
                var        url             = string.Format("https://maps.googleapis.com/maps/api/geocode/json?country=US&&address=" + encodedPostCode);
                var        JsonString      = client.DownloadString(url);
                RootObject _ResObject      = JsonConvert.DeserializeObject <RootObject>(JsonString);
                double     coordslong;
                double     coordslatt;
                if (_ResObject.status.ToUpper() == "OK")
                {
                    //add zip code details in cache database

                    coordslong = _ResObject.results[0].geometry.location.lng;
                    coordslatt = _ResObject.results[0].geometry.location.lat;
                    zipcodes  _codeDetails = new zipcodes().GetZipcodeDetails(postcode);
                    decimal[] locs         = new decimal[] { Convert.ToDecimal(coordslong), Convert.ToDecimal(coordslatt) };
                    new zipcodes().AddZipCodes(_ResObject.results[0].formatted_address, postcode, locs, 0, _ResObject.results[0].address_components[1].long_name);
                    return(new Coords
                    {
                        Longitude = coordslong,
                        Latitude = coordslatt
                    });
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                zipcodes _codeDetails = new zipcodes().GetZipcodeDetails(postcode);
                if (_codeDetails != null)
                {
                    double _lag  = Convert.ToDouble(_codeDetails.loc[0]);
                    double _latt = Convert.ToDouble(_codeDetails.loc[1]);

                    return(new Coords
                    {
                        Longitude = _lag,
                        Latitude = _latt
                    });
                }
                else
                {
                    return(null);
                }
            }
        }
Ejemplo n.º 2
0
        public static string GetAddressFromZipCode(string postcode)
        {
            try
            {
                zipcodes _zipCodeDetails = new zipcodes().GetZipcodeDetails(postcode);
                if (_zipCodeDetails != null)
                {
                    return(_zipCodeDetails.city);
                }
                else
                {
                    var        client          = new WebClient();
                    var        encodedPostCode = HttpUtility.UrlEncode(postcode);
                    var        url             = string.Format("https://maps.googleapis.com/maps/api/geocode/json?country=US&&address=" + encodedPostCode);
                    var        JsonString      = client.DownloadString(url);
                    RootObject _ResObject      = JsonConvert.DeserializeObject <RootObject>(JsonString);
                    double     coordslong;
                    double     coordslatt;
                    if (_ResObject.status.ToUpper() == "OK")
                    {
                        //add zip code details in cache database

                        coordslong = _ResObject.results[0].geometry.location.lng;
                        coordslatt = _ResObject.results[0].geometry.location.lat;
                        zipcodes  _codeDetails = new zipcodes().GetZipcodeDetails(postcode);
                        decimal[] locs         = new decimal[] { Convert.ToDecimal(coordslong), Convert.ToDecimal(coordslatt) };
                        new zipcodes().AddZipCodes(_ResObject.results[0].formatted_address, postcode, locs, 0, _ResObject.results[0].address_components[3].long_name);
                        return(_ResObject.results[0].formatted_address);
                    }
                    else
                    {
                        return("");
                    }
                }
            }
            catch (Exception)
            {
                return("");
            }
        }
Ejemplo n.º 3
0
        // Will return a null if the Google API is unable to find either post code, or the country constraint fails
        public static double?BetweenTwoPostCodes(string postcodeA, string postcodeB, Units units)
        {
            bool     IsCodeAApi    = true;
            bool     IsCodeBApi    = true;
            zipcodes _codeADetails = new zipcodes().GetZipcodeDetails(postcodeA);
            zipcodes _codeBDetails = new zipcodes().GetZipcodeDetails(postcodeB);

            if (_codeADetails != null)
            {
                if (_codeADetails.loc != null)
                {
                    IsCodeAApi = false;
                }
            }
            if (_codeBDetails != null)
            {
                if (_codeBDetails.loc != null)
                {
                    IsCodeBApi = false;
                }
            }


            var ll1 = PostCodeToLongLat(postcodeA, IsCodeAApi);

            if (!ll1.HasValue)
            {
                return(null);
            }
            var ll2 = PostCodeToLongLat(postcodeB, IsCodeBApi);

            if (!ll2.HasValue)
            {
                return(null);
            }
            return(ll1.Value.DistanceTo(ll2.Value, units));
        }