class Geocodio::Address

Attributes

accuracy[R]

How accurate geocod.io deemed this result to be given the original query.

@return [Float] a number between 0 and 1

city[R]
congressional_districts[R]
county[R]
elementary_school_district[R]
formatted_street[R]
house_district[R]
lat[R]
latitude[R]
lng[R]
longitude[R]
number[R]
postdirectional[R]
predirectional[R]
secondary_school_district[R]
senate_district[R]
state[R]
street[R]
suffix[R]
timezone[R]
unified_school_district[R]
zip[R]

Public Class Methods

new(payload = {}) click to toggle source
# File lib/geocodio/address.rb, line 26
def initialize(payload = {})
  set_attributes(payload['address_components']) if payload['address_components']
  set_coordinates(payload['location'])          if payload['location']
  set_additional_fields(payload['fields'])      if payload['fields']

  @accuracy          = payload['accuracy']
  @formatted_address = payload['formatted_address']
end

Public Instance Methods

to_s() click to toggle source

Formats the address in the standard way.

@return [String] a formatted address

# File lib/geocodio/address.rb, line 38
def to_s
  @formatted_address
end

Private Instance Methods

<=>(address) click to toggle source
# File lib/geocodio/address.rb, line 99
def <=>(address)
  return -1 if self.accuracy <  address.accuracy
  return  0 if self.accuracy == address.accuracy
  return  1 if self.accuracy >  address.accuracy
end
set_additional_fields(fields) click to toggle source
# File lib/geocodio/address.rb, line 62
def set_additional_fields(fields)
  set_congressional_districts(fields['congressional_districts'])   if fields['congressional_districts']
  set_legislative_districts(fields['state_legislative_districts']) if fields['state_legislative_districts']
  set_school_districts(fields['school_districts'])                 if fields['school_districts']
  set_timezone(fields['timezone'])                                 if fields['timezone']
end
set_attributes(attributes) click to toggle source
# File lib/geocodio/address.rb, line 44
def set_attributes(attributes)
  @number           = attributes['number']
  @predirectional   = attributes['predirectional']
  @street           = attributes['street']
  @suffix           = attributes['suffix']
  @postdirectional  = attributes['postdirectional']
  @formatted_street = attributes['formatted_street']
  @city             = attributes['city']
  @state            = attributes['state']
  @zip              = attributes['zip']
  @county           = attributes['county']
end
set_congressional_districts(districts) click to toggle source
# File lib/geocodio/address.rb, line 69
def set_congressional_districts(districts)
  return if districts.empty?

  @congressional_districts = districts.map { |district| CongressionalDistrict.new(district) }
end
set_coordinates(coordinates) click to toggle source
# File lib/geocodio/address.rb, line 57
def set_coordinates(coordinates)
  @latitude  = coordinates['lat']
  @longitude = coordinates['lng']
end
set_legislative_districts(districts) click to toggle source
# File lib/geocodio/address.rb, line 75
def set_legislative_districts(districts)
  return if districts.empty?

  @house_district = StateLegislativeDistrict.new(districts['house']) if districts['house']
  @senate_district = StateLegislativeDistrict.new(districts['senate']) if districts['senate']
end
set_school_districts(schools) click to toggle source
# File lib/geocodio/address.rb, line 82
def set_school_districts(schools)
  return if schools.empty?

  if schools['unified']
    @unified_school_district = SchoolDistrict.new(schools['unified'])
  else
    @elementary_school_district = SchoolDistrict.new(schools['elementary'])
    @secondary_school_district = SchoolDistrict.new(schools['secondary'])
  end
end
set_timezone(timezone) click to toggle source
# File lib/geocodio/address.rb, line 93
def set_timezone(timezone)
  return if timezone.empty?

  @timezone = Timezone.new(timezone)
end