diff --git a/lib/geocoder/results/google.rb b/lib/geocoder/results/google.rb index e293c0ba12b6bea6683ec43ec7a7ff0af3c6f956..d692b8e8aba2c1d23785b693bf5b90c268a95dd3 100644 --- a/lib/geocoder/results/google.rb +++ b/lib/geocoder/results/google.rb @@ -59,6 +59,16 @@ module Geocoder::Result end end + def street_number + if street_number = address_components_of_type(:street_number).first + street_number['long_name'] + end + end + + def street_address + [street_number, route].compact.join(' ') + end + def types @data['types'] end diff --git a/test/services_test.rb b/test/services_test.rb index 551040c92b1eeb2f10fee08e14d2a469a81789fb..c2eb493f88cd0c2a7019a8a784a7e59bcc6b4968 100644 --- a/test/services_test.rb +++ b/test/services_test.rb @@ -17,6 +17,12 @@ class ServicesTest < Test::Unit::TestCase result.address_components_of_type(:route).first['long_name'] end + def test_google_result_components_contains_street_number + result = Geocoder.search("Madison Square Garden, New York, NY").first + assert_equal "4", + result.address_components_of_type(:street_number).first['long_name'] + end + def test_google_returns_city_when_no_locality_in_result result = Geocoder.search("no locality").first assert_equal "Haram", result.city @@ -27,6 +33,11 @@ class ServicesTest < Test::Unit::TestCase assert_equal nil, result.city end + def test_google_street_address_returns_formatted_street_address + result = Geocoder.search("Madison Square Garden, New York, NY").first + assert_equal "4 Penn Plaza", result.street_address + end + def test_google_precision result = Geocoder.search("Madison Square Garden, New York, NY").first assert_equal "ROOFTOP",