Skip to content
Snippets Groups Projects
Commit f4738836 authored by Alex Reisner's avatar Alex Reisner
Browse files

Fix: handle coordinates string properly.

Get rid of space after comma, if any (Google was returning no results).
parent 6825c3d9
No related branches found
No related tags found
No related merge requests found
......@@ -21,7 +21,11 @@ module Geocoder
# for reverse geocoding. Returns an array of <tt>Geocoder::Result</tt>s.
#
def search(*args)
reverse = (args.size == 2) || coordinates?(args.first)
# if coordinates given as string, split into floats
if coordinates?(args.first)
args = args.first.split(/\s*,\s*/).map{ |i| i.to_f }
end
reverse = (args.size == 2)
results(args.join(","), reverse).map{ |r| result_class.new(r) }
end
......@@ -120,7 +124,7 @@ module Geocoder
# Does the given string look like latitude/longitude coordinates?
#
def coordinates?(value)
!!value.to_s.match(/^[0-9\.\-]+, ?[0-9\.\-]+$/)
!!value.to_s.match(/^[0-9\.\-]+, *[0-9\.\-]+$/)
end
##
......
......@@ -258,6 +258,13 @@ class GeocoderTest < Test::Unit::TestCase
assert !Geocoder.send(:blank_query?, "Москва") # no ASCII characters
end
def test_coordinates_detection
lookup = Geocoder::Lookup::Google.new
assert lookup.send(:coordinates?, "51.178844,5")
assert lookup.send(:coordinates?, "51.178844, -1.826189")
assert !lookup.send(:coordinates?, "232.65.123")
end
def test_does_not_choke_on_nil_address
all_lookups.each do |l|
Geocoder::Configuration.lookup = l
......@@ -351,13 +358,6 @@ class GeocoderTest < Test::Unit::TestCase
assert_match "appid=MY_KEY", g.send(:query_url, "Madison Square Garden, New York, NY 10001, United States")
end
def test_detection_of_coordinates_in_search_string
Geocoder::Configuration.lookup = :geocoder_ca
result = Geocoder.search("51.178844, -1.826189").first
assert_not_nil result.city
# city only present if reverse geocoding search performed
end
private # ------------------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment