module JT::Rails::Address
Public Class Methods
fields()
click to toggle source
# File lib/jt-rails-address.rb, line 31 def self.fields JT::Rails::Address::Schema::COLUMNS.keys end
search(text, google_api_key, options = {})
click to toggle source
# File lib/jt-rails-address.rb, line 35 def self.search(text, google_api_key, options = {}) geocoder = Graticule.service(:google).new(google_api_key) begin request_params = options.merge({ address: text }) response = geocoder.send('make_url', request_params).open('User-Agent' => Graticule::Geocoder::Base::USER_AGENT).read json = JSON.parse(response) return nil if !json['results'] || json['results'].size == 0 place = json['results'][0] data = HashWithIndifferentAccess.new data['lat'] = place['geometry']['location']['lat'] data['lng'] = place['geometry']['location']['lng'] data['formatted_address'] = place['formatted_address'] for address_component in place['address_components'] if address_component['types'][0] == 'street_number' data['street_number'] = address_component['long_name'] elsif address_component['types'][0] == 'route' data['street_name'] = address_component['long_name'] elsif address_component['types'][0] == 'country' data['country'] = address_component['long_name'] data['country_code'] = address_component['short_name'] elsif address_component['types'][0] == 'administrative_area_level_1' data['state'] = address_component['long_name'] data['state_code'] = address_component['short_name'] elsif address_component['types'][0] == 'administrative_area_level_2' data['department'] = address_component['long_name'] data['department_code'] = address_component['short_name'] elsif address_component['types'][0] == 'locality' || address_component['types'][0] == 'administrative_area3' data['city'] = address_component['long_name'] elsif address_component['types'][0] == 'postal_code' data['zip_code'] = address_component['long_name'] end end if !data['street_name'].blank? if !data['street_number'].blank? data['street'] = "#{data['street_number']} #{data['street_name']}" else data['street'] = data['street_name'] end end return data rescue Exception => e STDERR.puts e.message end return nil end