Работает ли гем Geocoder с ключом Google API?

Я использую ruby ​​geocoder gem для своего проекта, и по мере роста проекта я начинаю искать возможность подключения к ключу Google API. После добавления этого в проект:

Geocoder.configure do |config|

# geocoding service (see below for supported options):
config.lookup = :google

# to use an API key:
config.api_key = 'my_key'

# geocoding service request timeout, in seconds (default 3):
config.timeout = 5

end 

Я получаю сообщение об ошибке Google Geocoding API: запрос отклонен. когда я запускаю приложение. Судя по чтению, кажется, что другие переходят на Yahoo, если они решат продолжить использование драгоценного камня. Могу ли я настроить гем для работы с ключом Google API? В основном, я хотел бы следить за количеством ежедневных запросов, чтобы не превысить лимит.


person user527662    schedule 31.07.2012    source источник
comment
Та же проблема для меня. Удачи в решении?   -  person Glenn    schedule 17.08.2012
comment
Я перешел к внешнему поиску геокоординат, оставив геокодер на бэкенде в качестве запасного варианта. Посмотрите мой комментарий на github.com/alexreisner/geocoder/issues/222#issuecomment -7857999 с подробностями, если интересно.   -  person Glenn    schedule 22.08.2012
comment
Я считаю, что это связано с тем, что запросы Google API с ключом API должны быть подписаны: developers.google.com/maps/documentation/business/webservices Я почти уверен, что Geocoder не подписывает эти URL-адреса, поскольку для них также требуется идентификатор клиента.   -  person Fadi    schedule 29.03.2013
comment
Извините, мой предыдущий комментарий неверен: вам придется использовать ключ поиска Google Premier для геокодера: github.com/alexreisner/geocoder#google-google-google_premier Однако, насколько я слышал, Google Premier довольно дорогой.   -  person Fadi    schedule 29.03.2013


Ответы (7)


Geocoder поддерживает ключи API Google только для учетных записей Google Premier.

Его можно найти здесь, в файле readme на github: https://github.com/alexreisner/geocoder#google-google-google_premier

Если у вас есть API-ключ Google Premier, вам просто нужно поместить его в инициализатор:

# config/initializers/geocoder.rb
   Geocoder.configure(:lookup => :google_premier, :api_key => "...")

И ваш геокодер будет использовать ваш основной ключ.

person Mike Heijmans    schedule 20.09.2013

У меня была эта проблема сегодня, и мне удалось решить ее, установив use_https, например.

Geocoder.configure(
:timeout => 15,
:api_key => "YOUR_KEY",
:use_https => true
)
person DMH    schedule 02.12.2015

создайте файл: config/initializers/geocoder.rb и настройте его следующим образом:

Geocoder.configure(
:lookup => :google_premier,
:api_key=> ['api_key','client_id','client_id_type'],
)
person territorial    schedule 18.06.2015

Geocoder отлично работает с бесплатным уровнем их Map API. Однако, чтобы заставить его работать, мне пришлось зарегистрировать ключ, используя эту страницу конкретно.

https://console.developers.google.com/flows/enableapi?apiid=geocoding_backend&keyType=SERVER_SIDE


И настроить конфигурацию

# config/initializers/geocoder.rb
Geocoder.configure(
  api_key: 'KEY_HERE',
  use_https: true
)
person Sergio Tapia    schedule 18.04.2017

По умолчанию Geocoder использует API геокодирования Google для получения координат и адресов улиц. Итак, я думаю, что ключ API Google должен работать на инициализаторе.

Я надеюсь, что эта работа для вас.

person Alexander Giraldo    schedule 01.04.2013

Geocoder.configure(
  # geocoding service
  lookup: :google,

  # geocoding service request timeout (in seconds)
  timeout: 3,

  # default units
  units: :km
)

Эта работа для меня. Вы можете вызывать API из консоли rails с документом геокодера по адресу http://www.rubygeocoder.com/, чем вызывать его из представления /my_map/show.html.erb замените адрес или город и т. д. на <%= @place.address %>

person ari poya    schedule 01.08.2013

Если кто-то все еще смотрит на это, по какой-то причине Google API изменился, и Geocoder больше не работает со стандартным файлом конфигурации. Однако вы можете просто не использовать гем Geocoder для геокодирования и обратного геокодирования (не используйте Geocoder.search) и использовать гем HTTP-запроса для прямого вызова API Google, на данный момент с помощью RestClient вызов API будет

response = RestClient.get 'https://maps.googleapis.com/maps/api/geocode/json?address=' + sanitized_query + '&key=' + your_key

где очищенный запрос может быть адресом типа Cupertino, CA или строкой lat=x, lng=y для геокодирования или обратного геокодирования. Нет необходимости получать премьер-аккаунт Google.

person SWoo    schedule 29.01.2016