AngularJS集成Google Maps API遇REQUEST_DENIED错误(依地址而异)
分析Google Maps Geocoder返回REQUEST_DENIED的原因及解决办法
嘿,我来帮你捋清楚这个问题!你在AngularJS指令里调用Google地理编码服务时,遇到了部分地址能正常解析、但像Mallorca, Islas Baleares, España这类区域地址返回REQUEST_DENIED的情况,核心原因其实和Google Maps API的权限规则有关。
为什么会出现这个差异?
- Google Maps的地理编码服务现在强制要求使用API密钥进行调用。你当前加载API的脚本是不带
key参数的:
这种无密钥的调用方式在早期版本可能还能“侥幸”处理一些精准街道地址,但对于宽泛的区域级地址查询,Google的权限校验会直接拦截请求,返回<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=false" defer></script>REQUEST_DENIED。 - 另外,
REQUEST_DENIED的本质是请求未通过权限验证:要么是缺少有效密钥,要么是你的密钥没有启用Geocoding API,或者密钥设置了IP/域名限制,导致你的应用请求被拒。
解决步骤
- 申请并配置API密钥
去Google Cloud控制台创建一个Google Maps API密钥,然后在控制台里确保启用了Geocoding API服务(这一步很容易遗漏!)。 - 修改API加载脚本
在加载API的URL中添加key参数,替换成你的密钥:<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?key=你的API密钥&sensor=false" defer></script> - 检查密钥限制
确认你的API密钥没有设置过于严格的IP/域名限制,确保你的AngularJS应用所在的域名/IP在允许范围内。
额外提醒
如果后续遇到OVER_QUERY_LIMIT状态码,那才是请求配额不足的问题,但当前的REQUEST_DENIED完全是权限验证层面的问题,优先解决密钥配置就能搞定啦。
内容的提问来源于stack exchange,提问作者Rober
相关产品推荐
相关产品推荐

