1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
module Geocoder
module Result
class Base
# data (hash) fetched from geocoding service
attr_accessor :data
# true if result came from cache, false if from request to geocoding
# service; nil if cache is not configured
attr_accessor :cache_hit
##
# Takes a hash of data from a parsed geocoding service response.
#
def initialize(data)
@data = data
@cache_hit = nil
end
##
# A string in the given format.
#
# This default implementation dumbly follows the United States address
# format and will return incorrect results for most countries. Some APIs
# return properly formatted addresses and those should be funneled
# through this method.
#
def address(format = :full)
if state_code.to_s != ""
s = ", #{state_code}"
elsif state.to_s != ""
s = ", #{state}"
else
s = ""
end
"#{city}#{s} #{postal_code}, #{country}".sub(/^[ ,]*/, '')
end
##
# A two-element array: [lat, lon].
#
def coordinates
[@data['latitude'].to_f, @data['longitude'].to_f]
end
def latitude
coordinates[0]
end
def longitude
coordinates[1]
end
def state
fail
end
def province
state
end
def state_code
fail
end
def province_code
state_code
end
def country
fail
end
def country_code
fail
end
end
end
end
|