我正在尝试编程地理编码。我创建了API密钥,但是当我将它添加到我的网站代码中时,我没有得到任何东西,但是当我不使用API时,一切都运行良好。当我发送时:
octave:5> words(3:4)
ans =
{
[1,1] = are
[1,2] = you
}
我收到回复:
https://maps.googleapis.com/maps/api/geocode/json?address=".$adres."&key=KLUCZ_XXX
如果我使用:
Browser API keys cannot have referer restrictions when used with this API.
结果是正确的,但每天的查询数量有限。
密钥约束:引用HTTP(Web) - 设置为召唤查询的域。界面Google Maps Geocoding API已开启。
是否必须在其他地方激活API密钥才能工作?
答案 0 :(得分:52)
听起来你可能正在建立API调用服务器端。我今天早些时候遇到了这个问题。由于您已对API密钥设置了引荐来源限制,因此它将仅限于使用Web服务API在浏览器上执行,包括Geocoding API。即使在请求标头中手动设置引荐来源,它也不适用于我。您可以在此页面上找到其他Web服务API:https://developers.google.com/maps/web-services/
重要提示:如果您使用具有引用引用的API密钥的任何Web服务API,则您的请求将失败并显示错误消息:“API密钥在与此API一起使用时不能具有引用限制。”您应该切换到使用服务器限制。
您需要创建一个单独的密钥才能使用服务器端。您可以使用IP地址来限制访问,而不是使用浏览器引用来将限制从浏览器限制更改为服务器限制。
有关将密钥类型切换为服务器限制密钥的地图API常见问题解答,请参阅此部分:https://developers.google.com/maps/faq#switch-key-type
或者,您可以继续使用浏览器密钥和地理编码客户端(JavaScript),然后通过ajax将结果返回到后端。
答案 1 :(得分:0)
如果不是服务器端地理编码,则应使用Google Javascript API中的地理编码器。您可以在该API上设置HTTP引用限制。
Google本身说to avoid the Non-Javascript Geocoder API for dynamic geocoding:
此服务通常是为静态地理编码而设计的 (预先知道)用于将应用程序内容放置在 地图;此服务并非旨在实时响应用户 输入。用于动态地理编码(例如,在用户界面中) 元素),请参阅Maps JavaScript API客户端的文档 地理编码器和/或Google Play服务的位置API。
答案 2 :(得分:-1)
在您的Google API仪表板凭据中,您需要添加一个例外
https://*.google.com/*