acts_as_geocodable is a Rails plugin that makes your applications geo-aware. A picture (er, example) is worth a thousand words:


event = Event.create :street => "777 NE Martin Luther King, Jr. Blvd.",
  :locality => "Portland", :region => "Oregon", :postal_code => 97232

# how far am I from RailsConf 2007?
event.distance_to "49423" #=> 1807.66560483205

# Find our new event, and any other ones in the area
Event.find(:all, :within => 50, :origin => "97232")

# Find the nearest restaurant with beer
Restaurant.find(:nearest, :origin => event, :conditions => 'beer = true')

See the API documentation for more details.

IP-based geocoding

acts_as_geocodable adds a remote_location method to your Rails controllers for retrieving a user's location based on their remote IP address.

@nearest_store = Store.find(:nearest, :origin => remote_location) if remote_location

Don't rely too heavily on remote_location because the location of many IP addresses cannot be determined through HostIP.


Install the plugin by executing:

script/plugin install -x


Contributions are welcome and appreciated! Grab the source from: