Class: MapquestGeocoder
Overview
Some specific geocoding API classes follow. Google’s would seem most obvious, but since it requires you to display results on a map, … I didn’t want to have to evaluate other possible restrictions, or require that they be imposed on Kamelopard users.
Instance Attribute Summary collapse
-
#api_key ⇒ Object
readonly
Returns the value of attribute api_key.
-
#response_format ⇒ Object
readonly
Returns the value of attribute response_format.
Attributes inherited from Geocoder
Instance Method Summary collapse
-
#initialize(key, response_format = 'json') ⇒ MapquestGeocoder
constructor
A new instance of MapquestGeocoder.
-
#lookup(address) ⇒ Object
Returns an object built from the JSON result of the lookup, or an exception.
- #parse_response(r) ⇒ Object
Constructor Details
#initialize(key, response_format = 'json') ⇒ MapquestGeocoder
Returns a new instance of MapquestGeocoder.
30 31 32 33 34 35 36 37 38 |
# File 'lib/kamelopard/geocode.rb', line 30 def initialize(key, response_format = 'json') super() @proto = 'http' @host = 'www.mapquestapi.com' @path = '/geocoding/v1/address' @api_key = key @response_format = response_format @params['key'] = @api_key end |
Instance Attribute Details
#api_key ⇒ Object (readonly)
Returns the value of attribute api_key.
28 29 30 |
# File 'lib/kamelopard/geocode.rb', line 28 def api_key @api_key end |
#response_format ⇒ Object (readonly)
Returns the value of attribute response_format.
28 29 30 |
# File 'lib/kamelopard/geocode.rb', line 28 def response_format @response_format end |
Instance Method Details
#lookup(address) ⇒ Object
Returns an object built from the JSON result of the lookup, or an exception
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/kamelopard/geocode.rb', line 41 def lookup(address) # The argument can be a string, in which case PlaceFinder does the parsing # The argument can also be a hash, with several possible keys. See the PlaceFinder documentation for details # http://developer.yahoo.com/geo/placefinder/guide/requests.html http = Net::HTTP.new(@host) if address.kind_of? Hash then p = @params.merge address else p = @params.merge( { 'location' => address } ) end q = p.map { |k,v| "#{ k == 'key' ? k : CGI.escape(k) }=#{ k == 'key' ? v : CGI.escape(v) }" }.join('&') u = URI::HTTP.build([nil, @host, nil, @path, q, nil]) resp = Net::HTTP.get u parse_response resp end |
#parse_response(r) ⇒ Object
58 59 60 61 62 |
# File 'lib/kamelopard/geocode.rb', line 58 def parse_response(r) d = JSON.parse(r) raise d['info']['messages'].join(', ') if d['info']['statuscode'] != 0 d end |