예제 #1
0
 public ReadOnlyCollection <Toponym> FindNearbyPlaceName(NearbyPlaceNameFinder finder)
 {
     if (finder != null)
     {
         finder.UserName = _userName;
     }
     return(_client.FindNearbyPlaceName(finder));
 }
예제 #2
0
 public void GeoNames_FindNearbyPlaceName_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesContainer(null))
     {
         var finder  = new NearbyPlaceNameFinder();
         var results = geoNames.FindNearbyPlaceName(finder);
         results.ShouldBeNull();
     }
 }
예제 #3
0
        /// <summary>
        /// Find nearby populated place / reverse geocoding. See
        /// <seealso cref="http://www.geonames.org/export/web-services.html#findNearbyPlaceName">Official
        /// GeoNames  findNearbyPlaceName Documentation</seealso> for more information.
        /// </summary>
        /// <param name="finder">Arguments sent to the GeoNames service.</param>
        /// <returns>The closest populated place for the lat/lng query as xml document. The unit of the
        /// distance element is 'km'.</returns>
        public ReadOnlyCollection <Toponym> FindNearbyPlaceName(NearbyPlaceNameFinder finder)
        {
            if (finder == null)
            {
                throw new ArgumentNullException("finder");
            }

            var response = ChannelFindNearbyPlaceName(finder);

            var results = response.Items;

            return(results != null ? new ReadOnlyCollection <Toponym>(results) : null);
        }
        public void GeoNames_NearbyPlaceNameFinder_ShouldHaveDefaultValues()
        {
            var finder = new NearbyPlaceNameFinder();

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(0.0);
            finder.Longitude.ShouldEqual(0.0);
            finder.UserName.ShouldBeNull();
            finder.Language.ShouldEqual("local");
            finder.RadiusInKm.ShouldBeNull();
            finder.MaxRows.ShouldEqual(100);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
        public void GeoNames_NearbyPlaceNameFinder_ShouldHaveDefaultValues()
        {
            var finder = new NearbyPlaceNameFinder();

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(0.0);
            finder.Longitude.ShouldEqual(0.0);
            finder.UserName.ShouldBeNull();
            finder.Language.ShouldEqual("local");
            finder.RadiusInKm.ShouldBeNull();
            finder.MaxRows.ShouldEqual(100);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
예제 #6
0
        public void GeoNames_FindNearbyPlaceName_ShouldReturn1Result_ForLehighLatitudeAndLongitude_WhenNoRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesContainer(UserName))
            {
                var finder = new NearbyPlaceNameFinder
                {
                    Latitude  = 40.60326613801468,
                    Longitude = -75.37771224975586,
                };
                var results = geoNames.FindNearbyPlaceName(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(1);
                results[0].GeoNameId.ShouldEqual(5216771);
                results[0].Name.ShouldEqual("University Heights");
            }
        }
예제 #7
0
        public void GeoNames_FindNearbyPlaceName_ShouldReturn10Results_ForLehighLatitudeAndLongitude_When10KmRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesContainer(UserName))
            {
                var finder = new NearbyPlaceNameFinder
                {
                    Latitude = 40.60326613801468,
                    Longitude = -75.37771224975586,
                    RadiusInKm = 10.0,
                    MaxRows = 10,
                };
                var results = geoNames.FindNearbyPlaceName(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(10);
                results[0].GeoNameId.ShouldEqual(5216771);
                results[0].Name.ShouldEqual("University Heights");
            }
        }
예제 #8
0
        public void GeoNames_FindNearbyPlaceName_ShouldReturn10Results_ForLehighLatitudeAndLongitude_When10KmRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPlaceNameFinder
                {
                    Latitude   = 40.60326613801468,
                    Longitude  = -75.37771224975586,
                    UserName   = UserName,
                    RadiusInKm = 10.0,
                    MaxRows    = 10,
                };
                var results = geoNames.FindNearbyPlaceName(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(10);
                results[0].GeoNameId.ShouldEqual(5216771);
                results[0].Name.ShouldEqual("University Heights");
            }
        }
예제 #9
0
        private Results <Toponym> ChannelFindNearbyPlaceName(NearbyPlaceNameFinder finder, int retry = 0)
        {
            try
            {
                if (finder.RadiusInKm.HasValue)
                {
                    return(Channel.FindNearbyPlaceName(finder.Latitude, finder.Longitude, finder.Language,
                                                       finder.RadiusInKm.Value, finder.MaxRows, finder.Style, finder.UserName));
                }

                return(Channel.FindNearbyPlaceName(finder.Latitude, finder.Longitude, finder.Language,
                                                   finder.MaxRows, finder.Style, finder.UserName));
            }
            catch (WebException ex)
            {
                if (retry < RetryLimit && ex.Message.StartsWith(ClosedConnectionMessage, StringComparison.Ordinal))
                {
                    return(ChannelFindNearbyPlaceName(finder, ++retry));
                }
                throw;
            }
        }
        public void GeoNames_NearbyPlaceNameFinder_ShouldBePublic()
        {
            var finder = new NearbyPlaceNameFinder
            {
                Latitude = 90.0,
                Longitude = 180.0,
                UserName = "******",
                Language = "language",
                RadiusInKm = 1.0,
                MaxRows = 2,
                Style = ResultStyle.Medium,
            };

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(90.0);
            finder.Longitude.ShouldEqual(180.0);
            finder.UserName.ShouldNotBeNull();
            finder.Language.ShouldNotBeNull();
            finder.RadiusInKm.HasValue.ShouldBeTrue();
            finder.MaxRows.ShouldEqual(2);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
예제 #11
0
        public void GeoNames_NearbyPlaceNameFinder_ShouldBePublic()
        {
            var finder = new NearbyPlaceNameFinder
            {
                Latitude   = 90.0,
                Longitude  = 180.0,
                UserName   = "******",
                Language   = "language",
                RadiusInKm = 1.0,
                MaxRows    = 2,
                Style      = ResultStyle.Medium,
            };

            finder.ShouldNotBeNull();
            finder.Latitude.ShouldEqual(90.0);
            finder.Longitude.ShouldEqual(180.0);
            finder.UserName.ShouldNotBeNull();
            finder.Language.ShouldNotBeNull();
            finder.RadiusInKm.HasValue.ShouldBeTrue();
            finder.MaxRows.ShouldEqual(2);
            finder.Style.ShouldEqual(ResultStyle.Medium);
        }
예제 #12
0
 public void GeoNames_FindNearbyPlaceName_ShouldReturnNull_WithoutUserName()
 {
     using (var geoNames = new GeoNamesContainer(null))
     {
         var finder = new NearbyPlaceNameFinder();
         var results = geoNames.FindNearbyPlaceName(finder);
         results.ShouldBeNull();
     }
 }
예제 #13
0
        public void GeoNames_FindNearbyPlaceName_ShouldReturn1Result_ForLehighLatitudeAndLongitude_WhenNoRadiusIsSpecified()
        {
            using (var geoNames = new GeoNamesClient())
            {
                var finder = new NearbyPlaceNameFinder
                {
                    Latitude = 40.60326613801468,
                    Longitude = -75.37771224975586,
                    UserName = UserName,
                };
                var results = geoNames.FindNearbyPlaceName(finder);

                results.ShouldNotBeNull();
                results.Count.ShouldEqual(1);
                results[0].GeoNameId.ShouldEqual(5216771);
                results[0].Name.ShouldEqual("University Heights");
            }
        }
예제 #14
0
 public ReadOnlyCollection<Toponym> FindNearbyPlaceName(NearbyPlaceNameFinder finder)
 {
     if (finder != null) finder.UserName = _userName;
     return _client.FindNearbyPlaceName(finder);
 }