]> git.openstreetmap.org Git - rails.git/blob - app/controllers/searches/latlon_queries_controller.rb
Limit number of directions endpoint geocoding results to 1
[rails.git] / app / controllers / searches / latlon_queries_controller.rb
1 module Searches
2   class LatlonQueriesController < QueriesController
3     def create
4       lat = params[:lat].to_f
5       lon = params[:lon].to_f
6
7       if params[:latlon_digits]
8         # We've got two nondescript numbers for a query, which can mean both "lat, lon" or "lon, lat".
9         @results = []
10
11         if lat.between?(-90, 90) && lon.between?(-180, 180)
12           @results.push(:lat => params[:lat], :lon => params[:lon],
13                         :zoom => params[:zoom],
14                         :name => "#{params[:lat]}, #{params[:lon]}")
15         end
16
17         if lon.between?(-90, 90) && lat.between?(-180, 180)
18           @results.push(:lat => params[:lon], :lon => params[:lat],
19                         :zoom => params[:zoom],
20                         :name => "#{params[:lon]}, #{params[:lat]}")
21         end
22
23         if @results.empty?
24           @error = "Latitude or longitude are out of range"
25           render :action => "error"
26         end
27       else
28         # Coordinates in a query have come with markers for latitude and longitude.
29         if !lat.between?(-90, 90)
30           @error = "Latitude #{lat} out of range"
31           render :action => "error"
32         elsif !lon.between?(-180, 180)
33           @error = "Longitude #{lon} out of range"
34           render :action => "error"
35         else
36           @results = [{ :lat => params[:lat], :lon => params[:lon],
37                         :zoom => params[:zoom],
38                         :name => "#{params[:lat]}, #{params[:lon]}" }]
39         end
40       end
41     end
42   end
43 end