diff --git a/lib/geocoder/lookups/mapbox.rb b/lib/geocoder/lookups/mapbox.rb index 797c2648b3fe14a20cc58ad822256a3d75194349..36b11b018f5dc09970d6a52694162cc984ed30d1 100644 --- a/lib/geocoder/lookups/mapbox.rb +++ b/lib/geocoder/lookups/mapbox.rb @@ -9,7 +9,8 @@ module Geocoder::Lookup end def query_url(query) - "#{protocol}://api.mapbox.com/geocoding/v5/#{dataset}/#{url_query_string(query)}.json?access_token=#{configuration.api_key}" + path = "#{mapbox_search_term(query)}.json?#{url_query_string(query)}" + "#{protocol}://api.mapbox.com/geocoding/v5/#{dataset}/#{path}" end private # --------------------------------------------------------------- @@ -25,7 +26,11 @@ module Geocoder::Lookup end end - def url_query_string(query) + def query_url_params(query) + {access_token: configuration.api_key}.merge(super(query)) + end + + def mapbox_search_term(query) require 'cgi' unless defined?(CGI) && defined?(CGI.escape) if query.reverse_geocode? lat,lon = query.coordinates diff --git a/test/unit/lookups/mapbox_test.rb b/test/unit/lookups/mapbox_test.rb index 33d15924856546b2fe4b469877166cd6e25c6cc4..5976442ef7ea90e3ad7c4df08eab4f18d9f94770 100644 --- a/test/unit/lookups/mapbox_test.rb +++ b/test/unit/lookups/mapbox_test.rb @@ -14,6 +14,12 @@ class MapboxTest < GeocoderTestCase assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123", query.url end + def test_url_contains_params + Geocoder.configure(mapbox: {api_key: "abc123"}) + query = Geocoder::Query.new("Leadville, CO", {params: {country: 'CN'}}) + assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123&country=CN", query.url + end + def test_result_components result = Geocoder.search("Madison Square Garden, New York, NY").first assert_equal [40.749688, -73.991566], result.coordinates