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