class Geocoder::Result::Google
def address(format = :full)
def address(format = :full) formatted_address end
def address_components
def address_components @data['address_components'] end
def address_components_of_type(type)
:postal_code
:route
:neighborhood
:locality
:street_number
Google's Geocoding API documentation and include (among others):
Get address components of a given type. Valid types are defined in
#
def address_components_of_type(type) address_components.select{ |c| c['types'].include?(type.to_s) } end
def city
def city fields = [:locality, :sublocality, :administrative_area_level_3, :administrative_area_level_2] fields.each do |f| if entity = address_components_of_type(f).first return entity['long_name'] end end return nil # no appropriate components found end
def coordinates
def coordinates ['lat', 'lng'].map{ |i| geometry['location'][i] } end
def country
def country if country = address_components_of_type(:country).first country['long_name'] end end
def country_code
def country_code if country = address_components_of_type(:country).first country['short_name'] end end
def formatted_address
def formatted_address @data['formatted_address'] end
def geometry
def geometry @data['geometry'] end
def postal_code
def postal_code if postal = address_components_of_type(:postal_code).first postal['long_name'] end end
def precision
def precision geometry['location_type'] if geometry end
def route
def route if route = address_components_of_type(:route).first route['long_name'] end end
def state
def state if state = address_components_of_type(:administrative_area_level_1).first state['long_name'] end end
def state_code
def state_code if state = address_components_of_type(:administrative_area_level_1).first state['short_name'] end end
def types
def types @data['types'] end