我正在为我的项目使用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地理编码API错误:请求被拒绝。当我启动应用程序时。从阅读开始,如果他们选择继续使用宝石,似乎其他人转向雅虎。我可以将gem配置为使用google api密钥吗?主要是,我想留意每日查询的数量,以避免超出限制。
答案 0 :(得分:6)
Geocoder仅支持Google Premier帐户的Google API密钥。
它在github上的自述文件中找到:https://github.com/alexreisner/geocoder#google-google-google_premier
如果您有Google Premier API密钥,则只需将其放入初始化程序中即可:
# config/initializers/geocoder.rb
Geocoder.configure(:lookup => :google_premier, :api_key => "...")
您的地理编码器将使用您的首要密钥。
答案 1 :(得分:3)
我今天遇到了这个问题并设法通过设置use_https
例如
Geocoder.configure(
:timeout => 15,
:api_key => "YOUR_KEY",
:use_https => true
)
答案 2 :(得分:2)
创建一个文件: config / initializers / geocoder.rb和这样的设置:
Geocoder.configure(
:lookup => :google_premier,
:api_key=> ['api_key','client_id','client_id_type'],
)
答案 3 :(得分:1)
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
)
答案 4 :(得分:-1)
默认情况下,Geocoder使用Google的地理编码API来获取坐标和街道地址。因此,我认为Google API密钥应该适用于初始化程序。
我希望这对你有用。
答案 5 :(得分:-1)
Geocoder.configure(
# geocoding service
lookup: :google,
# geocoding service request timeout (in seconds)
timeout: 3,
# default units
units: :km
)
这项工作对我而言。您可以使用http://www.rubygeocoder.com/处的地理编码器文档从rails控制台调用API,而不是使用<%= @place.address %>
答案 6 :(得分:-1)
如果有人仍在查看此内容,由于某些原因Google API已更改且Geocoder不再使用标准配置文件。但是,您可以简单地不使用Geocoder gem进行地理编码和反向地理编码(不要使用Geocoder.search)并使用任何http请求gem来直接调用google api,因为此时使用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高级帐户。