Recently i implemented Google map for one of the module where User will enter his location/address and other relevant geo-details should get autopopulated.Well,This was posible because of Geocoder and by using it you can get every small details such as postalcode,country code,zipcode,street name,state name,state code,latitude,longitude(and more) ready in your hands easily.Its really awesome.
I have used to it get all relevant information about the location that the user enter using Geocomplete,another awesome autocomplete library to get locations.
Suppose you have a users table and also few columns such as longitude,latitude,state,postal code,street name,address,country and want to autopopulate other fields just by using address entered by the user then you are reading the right blog,So its easy,let me show you how.
Here it goes................
================users/locations table,here i will use the allow the user to fill in the address using Geocomplete and then use it to get other details using Geocoder
class CreateLocations < ActiveRecord::Migration
def change
create_table :places do |t|
t.string :address
t.float :latitude
t.float :longitude
t.string :address
t.string :country
t.string :state
t.string :city
t.string :pincode
t.timestamps
end
add_index :places, :address
end
end
I have used to it get all relevant information about the location that the user enter using Geocomplete,another awesome autocomplete library to get locations.
Suppose you have a users table and also few columns such as longitude,latitude,state,postal code,street name,address,country and want to autopopulate other fields just by using address entered by the user then you are reading the right blog,So its easy,let me show you how.
- User will enter address using Geocomplete and store that address in address column in users/locations table
- Then,use Geocoder to fetch other geo informations and update other columns using address.
Here it goes................
================users/locations table,here i will use the allow the user to fill in the address using Geocomplete and then use it to get other details using Geocoder
class CreateLocations < ActiveRecord::Migration
def change
create_table :places do |t|
t.string :address
t.float :latitude
t.float :longitude
t.string :address
t.string :country
t.string :state
t.string :city
t.string :pincode
t.timestamps
end
add_index :places, :address
end
end
==================Geocode to autopopulate using address in users/location model
##i want to use the address column to autopopulate others columns
geocoded_by :address
##also i want to use the latitude.longitude to fetch all others informations and then save in relevant ##feilds
reverse_geocoded_by :latitude, :longitude do |obj,results|
if geo = results.first
obj.state = geo.state
obj.city = geo.city
obj.pincode = geo.postal_code
obj.country = geo.country
end
end
##change/update/validate address only if address changed to improved performance else every time it ##will keep updating
after_validation :geocode, :reverse_geocode ,:if => :address_changed?
.
So,as you can see,how easy it is to get every geo informations using Geocoder.There are also many other uses of Geocoder which is out of the scope of this blog and can be found out here.Hope you get to learn something new,
Comments