30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/geo_rb/geo_coders/nominatim.rb', line 30
def geocode(query, detailed: false, language: nil, country_codes: [], viewbox: nil, exactly_one: true, limit: nil, bounded: false)
params = case query
when Hash
query.slice(STRUCTURED_QUERY_PARAMS)
else
{'q': query}
end
if exactly_one
params[:limit] = 1
elsif limit.nil?
raise "Limit cannot be less than 1" if limit < 1
params[:limit] = limit
end
params[:bounded] = 1 if bounded
params[:addressdetails] = 1 if detailed
params[:countrycodes] = country_codes.join(",") unless country_codes.empty?
params[:format] = "json"
params[:"accept-language"] = language if language
params[:viewbox] = format_bounding_box(viewbox[0], viewbox[1]) if viewbox
url = build_url(:search, params)
GeoRb.logger.debug url
proc = ->(data) { data.first } if exactly_one
call(url, proc)
end
|