示例#1
0
 public bool RecallCounty(ILocationProvider provider)
 {
     if (provider != null)
     {
         GeoLocateResult r = provider.LocateIp(_Address);
         if (r != null)
         {
             Country = r.ISOCode;
             return(true);
         }
     }
     return(false);
 }
        /// <summary>
        /// Performs asynchonous GeoLocation using the information in the specified request
        /// </summary>
        public async Task <GeoLocateResult> GeoLocateAsync(GeoLocateRequest request)
        {
            GeoLocateResult result = new GeoLocateResult();

            result.Addresses = new GeoLocatorResultAddressCollection();
            result.Status    = new GeoLocatorResultStatus {
                Success = false
            };

            if (!String.IsNullOrEmpty(request.Address.Place) && request.Address.Place.Length > 2)
            {
                try
                {
                    var locateServiceUri = GeoLocateServiceUri(request.Address.Place, request.MaximumNumberOfResults);
                    var searchUri        = ReroutedGeoLocatorServiceUri(locateServiceUri);
                    var searchResult     = await new WebClient().DownloadStringTaskAsync(searchUri);

                    if (!string.IsNullOrEmpty(searchResult))
                    {
                        var doc = XDocument.Parse(searchResult);
                        foreach (var geoAdress in GetGeoLocateServiceResult(doc))
                        {
                            result.Addresses.Add(new GeoLocatorResultAddress {
                                Place = geoAdress.Name, Description = geoAdress.Name, Envelope = geoAdress.Bounds
                            });
                        }

                        result.Status.Success = true;
                    }
                }
                catch (Exception)
                {}
            }
            else
            {
                result.Status.Message = ApplicationResources.GeoLocatorEmptyRequest;
            }

            return(result);
        }
示例#3
0
 public bool RecallCounty(ILocationProvider provider)
 {
     if (provider != null)
     {
         GeoLocateResult r = provider.LocateIp(_Address);
         if (r != null)
         {
             string cn, ct;
             if (StringHelper.Split(r.ISOCode, '-', out cn, out ct))
             {
                 Continent = cn;
                 Country   = ct;
             }
             else
             {
                 Country = r.ISOCode;
             }
             return(true);
         }
     }
     return(false);
 }