#273 Geocoder
Jul 04, 2011 | 8 minutes | Plugins
If you need to work with geographic data, Geocoder is an excellent gem for converting addresses and coordinates, finding nearby locations, determining distances, and more!
- Download:
- source codeProject Files in Zip (195 KB)
- mp4Full Size H.264 Video (18.6 MB)
- m4vSmaller H.264 Video (9.43 MB)
- webmFull Size VP8 Video (9.95 MB)
- ogvFull Size Theora Video (22.6 MB)
Resources
bash
rails g nifty:scaffold location address:string latitude:float longitude:float
rake db:migrate
bundle
rails g nifty:scaffold location address:string latitude:float longitude:float rake db:migrate bundle
Gemfile
gem 'geocoder'
gem 'geocoder'
models/location.rb
geocoded_by :address
after_validation :geocode, :if => :address_changed?
geocoded_by :address after_validation :geocode, :if => :address_changed?
locations_controller.rb
def index
if params[:search].present?
@locations = Location.near(params[:search], 50, :order => :distance)
else
@locations = Location.all
end
end
def index if params[:search].present? @locations = Location.near(params[:search], 50, :order => :distance) else @locations = Location.all end end
locations/show.html.erb
<%= image_tag "http://maps.google.com/maps/api/staticmap?size=450x300&sensor=false&zoom=16&markers=#{@location.latitude}%2C#{@location.longitude}" %>
<h3>Nearby locations</h3>
<ul>
<% for location in @location.nearbys(10) %>
<li><%= link_to location.address, location %> (<%= location.distance.round(2) %> miles)</li>
<% end %>
</ul>
<%= image_tag "http://maps.google.com/maps/api/staticmap?size=450x300&sensor=false&zoom=16&markers=#{@location.latitude}%2C#{@location.longitude}" %> <h3>Nearby locations</h3> <ul> <% for location in @location.nearbys(10) %> <li><%= link_to location.address, location %> (<%= location.distance.round(2) %> miles)</li> <% end %> </ul>
locations/index.html.erb
<%= form_tag locations_path, :method => :get do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search Near", :name => nil %>
</p>
<% end %>
<%= form_tag locations_path, :method => :get do %> <p> <%= text_field_tag :search, params[:search] %> <%= submit_tag "Search Near", :name => nil %> </p> <% end %>

