]> git.openstreetmap.org Git - rails.git/commitdiff
Preserve lat and lon values as entered for reverse searches
authorTom Hughes <tom@compton.nu>
Sun, 7 Jul 2024 10:58:18 +0000 (11:58 +0100)
committerTom Hughes <tom@compton.nu>
Fri, 12 Jul 2024 11:04:16 +0000 (12:04 +0100)
app/controllers/geocoder_controller.rb
test/controllers/geocoder_controller_test.rb

index 8ec0ab6b70acbb6c6e645e9a25229347ebfa0c9b..0e0a2d8af45f7a59d1825353f2d4548e3a00662c 100644 (file)
@@ -35,15 +35,15 @@ class GeocoderController < ApplicationController
       @results = []
 
       if lat >= -90 && lat <= 90 && lon >= -180 && lon <= 180
       @results = []
 
       if lat >= -90 && lat <= 90 && lon >= -180 && lon <= 180
-        @results.push(:lat => lat, :lon => lon,
+        @results.push(:lat => params[:lat], :lon => params[:lon],
                       :zoom => params[:zoom],
                       :zoom => params[:zoom],
-                      :name => "#{lat}, #{lon}")
+                      :name => "#{params[:lat]}, #{params[:lon]}")
       end
 
       if lon >= -90 && lon <= 90 && lat >= -180 && lat <= 180
       end
 
       if lon >= -90 && lon <= 90 && lat >= -180 && lat <= 180
-        @results.push(:lat => lon, :lon => lat,
+        @results.push(:lat => params[:lon], :lon => params[:lat],
                       :zoom => params[:zoom],
                       :zoom => params[:zoom],
-                      :name => "#{lon}, #{lat}")
+                      :name => "#{params[:lon]}, #{params[:lat]}")
       end
 
       if @results.empty?
       end
 
       if @results.empty?
@@ -61,9 +61,9 @@ class GeocoderController < ApplicationController
         @error = "Longitude #{lon} out of range"
         render :action => "error"
       else
         @error = "Longitude #{lon} out of range"
         render :action => "error"
       else
-        @results = [{ :lat => lat, :lon => lon,
+        @results = [{ :lat => params[:lat], :lon => params[:lon],
                       :zoom => params[:zoom],
                       :zoom => params[:zoom],
-                      :name => "#{lat}, #{lon}" }]
+                      :name => "#{params[:lat]}, #{params[:lon]}" }]
 
         render :action => "results"
       end
 
         render :action => "results"
       end
@@ -219,7 +219,7 @@ class GeocoderController < ApplicationController
         params.merge!(dms_to_decdeg(latlon)).delete(:query)
 
       elsif latlon = query.match(%r{^([+-]?\d+(\.\d*)?)(?:\s+|\s*[,/]\s*)([+-]?\d+(\.\d*)?)$})
         params.merge!(dms_to_decdeg(latlon)).delete(:query)
 
       elsif latlon = query.match(%r{^([+-]?\d+(\.\d*)?)(?:\s+|\s*[,/]\s*)([+-]?\d+(\.\d*)?)$})
-        params.merge!(:lat => latlon[1].to_f, :lon => latlon[3].to_f).delete(:query)
+        params.merge!(:lat => latlon[1], :lon => latlon[3]).delete(:query)
 
         params[:latlon_digits] = true
       end
 
         params[:latlon_digits] = true
       end
index d32521c3bf42565e7663a0a529666ed3ffb537c5..15d4eb5f9fce4fd33c96c705a0b3d822bf2097dc 100644 (file)
@@ -368,8 +368,8 @@ class GeocoderControllerTest < ActionDispatch::IntegrationTest
     assert_template :layout => "map"
     assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name)
     assert_nil @controller.params[:query]
     assert_template :layout => "map"
     assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name)
     assert_nil @controller.params[:query]
-    assert_in_delta lat, @controller.params[:lat]
-    assert_in_delta lon, @controller.params[:lon]
+    assert_in_delta lat, @controller.params[:lat].to_f
+    assert_in_delta lon, @controller.params[:lon].to_f
 
     get search_path(:query => query), :xhr => true
     assert_response :success
 
     get search_path(:query => query), :xhr => true
     assert_response :success
@@ -377,8 +377,8 @@ class GeocoderControllerTest < ActionDispatch::IntegrationTest
     assert_template :layout => "xhr"
     assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name)
     assert_nil @controller.params[:query]
     assert_template :layout => "xhr"
     assert_equal %w[latlon osm_nominatim_reverse], assigns(:sources).pluck(:name)
     assert_nil @controller.params[:query]
-    assert_in_delta lat, @controller.params[:lat]
-    assert_in_delta lon, @controller.params[:lon]
+    assert_in_delta lat, @controller.params[:lat].to_f
+    assert_in_delta lon, @controller.params[:lon].to_f
   end
 
   def search_check(query, sources)
   end
 
   def search_check(query, sources)