- response.elements.each("searchresults/named") do |named|
- lat = named.attributes["lat"].to_s
- lon = named.attributes["lon"].to_s
- zoom = named.attributes["zoom"].to_s
- place = named.elements["place/named"] || named.elements["nearestplaces/named"]
- type = named.attributes["info"].to_s
- name = named.attributes["name"].to_s
- description = named.elements["description"].to_s
- distance = format_distance(place.attributes["approxdistance"].to_i)
- direction = format_direction((place.attributes["direction"].to_i - 180) % 360)
- prefix = "#{distance} #{direction} of #{type} "
- results.push({:lat => lat, :lon => lon, :zoom => zoom,
- :prefix => prefix.capitalize, :name => name,
- :description => description})
- end
-
- return { :type => types.capitalize, :source => "OpenStreetMap Namefinder", :url => "http://www.frankieandshadow.com/osm/", :results => results }
- rescue Exception => ex
- return { :type => types.capitalize, :source => "OpenStreetMap Namefinder", :url => "http://www.frankieandshadow.com/osm/", :error => "Error contacting www.frankieandshadow.com: #{ex.to_s}" }
- end
-
- def description_geonames(lat, lon)
- results = Array.new
+ response.elements.each("reversegeocode/result") do |result|
+ lat = result.attributes["lat"].to_s
+ lon = result.attributes["lon"].to_s
+ object_type = result.attributes["osm_type"]
+ object_id = result.attributes["osm_id"]
+ description = result.get_text.to_s
+
+ @results.push(:lat => lat, :lon => lon,
+ :zoom => zoom,
+ :name => description,
+ :type => object_type, :id => object_id)
+ end
+
+ render :action => "results"
+ rescue StandardError => ex
+ @error = "Error contacting nominatim.openstreetmap.org: #{ex}"
+ render :action => "error"
+ end
+
+ def search_geonames_reverse
+ # get query parameters
+ lat = params[:lat]
+ lon = params[:lon]
+
+ # get preferred language
+ lang = I18n.locale.to_s.split("-").first
+
+ # create result array
+ @results = []