From 60f30fd3dd10313fdeb3c58a880e312905728880 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 15 Oct 2013 11:14:51 -0400 Subject: [PATCH] Restore raw latlon search result --- app/controllers/geocoder_controller.rb | 19 +++++++++++++ config/locales/en.yml | 1 + config/routes.rb | 1 + test/functional/geocoder_controller_test.rb | 30 ++++++++++++--------- 4 files changed, 38 insertions(+), 13 deletions(-) diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/geocoder_controller.rb index ac6a2013cc..34d8efdbcf 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/geocoder_controller.rb @@ -13,6 +13,7 @@ def search @sources = [] if params[:lat] && params[:lon] + @sources.push "latlon" @sources.push "osm_nominatim_reverse" @sources.push "geonames_reverse" elsif params[:query].match(/^\d{5}(-\d{4})?$/) @@ -30,6 +31,24 @@ def search end end + def search_latlon + lat = params[:lat].to_f + lon = params[:lon].to_f + if lat < -90 or lat > 90 + @error = "Latitude #{lat} out of range" + render :action => "error" + elsif lon < -180 or lon > 180 + @error = "Longitude #{lon} out of range" + render :action => "error" + else + @results = [{:lat => lat, :lon => lon, + :zoom => params[:zoom], + :name => "#{lat}, #{lon}"}] + + render :action => "results" + end + end + def search_us_postcode # get query parameters query = params[:query] diff --git a/config/locales/en.yml b/config/locales/en.yml index a1938079fb..d7411e997c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -462,6 +462,7 @@ en: geocoder: search: title: + latlon: 'Results from Internal' us_postcode: 'Results from Geocoder.us' uk_postcode: 'Results from NPEMap / FreeThe Postcode' ca_postcode: 'Results from Geocoder.CA' diff --git a/config/routes.rb b/config/routes.rb index 445c0353f0..0a4682f1b1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -214,6 +214,7 @@ # geocoder match '/geocoder/search' => 'geocoder#search', :via => :post + match '/geocoder/search_latlon' => 'geocoder#search_latlon', :via => :get match '/geocoder/search_us_postcode' => 'geocoder#search_us_postcode', :via => :get match '/geocoder/search_uk_postcode' => 'geocoder#search_uk_postcode', :via => :get match '/geocoder/search_ca_postcode' => 'geocoder#search_ca_postcode', :via => :get diff --git a/test/functional/geocoder_controller_test.rb b/test/functional/geocoder_controller_test.rb index 51fc2020ad..d8eee97d8a 100644 --- a/test/functional/geocoder_controller_test.rb +++ b/test/functional/geocoder_controller_test.rb @@ -11,6 +11,10 @@ def test_routes { :path => "/geocoder/search", :method => :post }, { :controller => "geocoder", :action => "search" } ) + assert_routing( + { :path => "/geocoder/search_latlon", :method => :get }, + { :controller => "geocoder", :action => "search_latlon" } + ) assert_routing( { :path => "/geocoder/search_us_postcode", :method => :get }, { :controller => "geocoder", :action => "search_us_postcode" } @@ -52,7 +56,7 @@ def test_identify_latlon_basic ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta 50.06773, @controller.params[:lat] assert_in_delta 14.37742, @controller.params[:lon] @@ -70,7 +74,7 @@ def test_identify_latlon_ne_d ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta 50.06773, @controller.params[:lat] assert_in_delta 14.37742, @controller.params[:lon] @@ -88,7 +92,7 @@ def test_identify_latlon_nw_d ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta 50.06773, @controller.params[:lat] assert_in_delta -14.37742, @controller.params[:lon] @@ -106,7 +110,7 @@ def test_identify_latlon_se_d ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta -50.06773, @controller.params[:lat] assert_in_delta 14.37742, @controller.params[:lon] @@ -124,7 +128,7 @@ def test_identify_latlon_sw_d ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta -50.06773, @controller.params[:lat] assert_in_delta -14.37742, @controller.params[:lon] @@ -145,7 +149,7 @@ def test_identify_latlon_ne_dm ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta 50.06773, @controller.params[:lat] assert_in_delta 14.37742, @controller.params[:lon] @@ -166,7 +170,7 @@ def test_identify_latlon_nw_dm ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta 50.06773, @controller.params[:lat] assert_in_delta -14.37742, @controller.params[:lon] @@ -187,7 +191,7 @@ def test_identify_latlon_se_dm ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta -50.06773, @controller.params[:lat] assert_in_delta 14.37742, @controller.params[:lon] @@ -208,7 +212,7 @@ def test_identify_latlon_sw_dm ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta -50.06773, @controller.params[:lat] assert_in_delta -14.37742, @controller.params[:lon] @@ -228,7 +232,7 @@ def test_identify_latlon_ne_dms ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta 50.06773, @controller.params[:lat] assert_in_delta 14.37742, @controller.params[:lon] @@ -248,7 +252,7 @@ def test_identify_latlon_nw_dms ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta 50.06773, @controller.params[:lat] assert_in_delta -14.37742, @controller.params[:lon] @@ -268,7 +272,7 @@ def test_identify_latlon_se_dms ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta -50.06773, @controller.params[:lat] assert_in_delta 14.37742, @controller.params[:lon] @@ -288,7 +292,7 @@ def test_identify_latlon_sw_dms ].each do |code| post :search, :query => code assert_response :success - assert_equal ['osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) + assert_equal ['latlon' ,'osm_nominatim_reverse', 'geonames_reverse'], assigns(:sources) assert_nil @controller.params[:query] assert_in_delta -50.06773, @controller.params[:lat] assert_in_delta -14.37742, @controller.params[:lon]