geocoder controller - handles geocoding
This commit is contained in:
parent
1f8bf07464
commit
ff2b0f81c4
1 changed files with 36 additions and 0 deletions
36
app/controllers/geocoder_controller.rb
Normal file
36
app/controllers/geocoder_controller.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
class GeocoderController < ApplicationController
|
||||
|
||||
require 'net/http'
|
||||
require 'rexml/document'
|
||||
|
||||
def search
|
||||
@res_hash = {}
|
||||
@postcode_arr = []
|
||||
|
||||
=begin if params[:geocode][:place]
|
||||
postcode = params[:geocode][:place]
|
||||
Net::HTTP.start('ws.geonames.org') do |http|
|
||||
res = http.get("/search?q=#{query}&maxRows=10")
|
||||
xml = REXML::Document.new(res.body)
|
||||
xml.elements.each("/geonames/geoname") do |ele|
|
||||
ele.elements.each("name"){ |n| @res_hash['name'] = n.text }
|
||||
ele.elements.each("countryCode"){ |n| @res_hash['country'] = n.text }
|
||||
ele.elements.each("lat"){ |n| @res_hash['lat'] = n.text }
|
||||
ele.elements.each("lng"){ |n| @res_hash['lon']= n.text }
|
||||
end
|
||||
end
|
||||
end
|
||||
=end
|
||||
|
||||
if params[:query][:postcode]
|
||||
postcode = params[:query][:postcode]
|
||||
Net::HTTP.start('www.freethepostcode.org') do |http|
|
||||
resp = http.get("/geocode?postcode=#{postcode}")
|
||||
lat = resp.body.scan(/[4-6][0-9]\.?[0-9]+/)
|
||||
lon = resp.body.scan(/[-+][0-9]\.?[0-9]+/)
|
||||
@postcode_array = [lat, lon]
|
||||
end
|
||||
redirect_to "/index.html?lat=#{@postcode_array[0]}&lon=#{@postcode_array[1]}&zoom=14"
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue