1

我正在使用谷歌地图网络服务来执行服务器端(反向)地理编码。

我从 Google API 控制台获得了浏览器端和服务器端的 Google API 密钥,它允许 Google Maps JS API 使用更高的请求配额,并启用按使用付费的超额(通过在浏览器中成功测试通过JS)。但服务器端密钥似乎不适用于 Web 服务请求。

例如,此 URL 工作正常: http://maps.googleapis.com/maps/api/geocode/json?sensor=true&latlng=43.477329,
-80.548601

但是如果你添加一个“key=...”参数,就像在其他 API 中一样,我会得到一个 REQUEST_DENIED 状态。

我做错了什么,还是 Web 服务 API 不支持(还)?以后会支持吗?

也可以看看

request_denied 当我包含 key=my_api_key

4

2 回答 2

1

不,你没有做错任何事。

不幸的是,对Google Geocoding API(也称为“服务器端地理编码”)实施严格限制是 Google 的设计。如果您的应用每天需要超过 2,500 个服务器端地理编码,那么您需要升级到他们的Google Maps API for Business产品。

等一下,情况会更糟。

如果您的应用程序的服务器 IP 地址与其他应用程序共享,则每日 2,500 个请求的限制适用于所有应用程序。这包括与您共享相同服务器 IP 地址但不属于您的应用程序! 这可能是任何 PaaS 的常见情况,例如 Google App Engine 或 Heroku。因此,即使您的应用程序今天运行完美,也不能保证它明天仍然可以运行。

在文章“地理编码策略”中,Google 指出解决方案是“几乎总是”通过地理编码服务( Google Maps JavaScript API V3的一部分)使用“客户端地理编码” 。主要原因是限制是针对每个用户、每个会话强制执行的。除非您在客户端上执行地理编码批处理(不是典型用例),否则此类请求不应超出配额限制。

“地理编码策略”文章中的一个金块:设计一个页面,该页面接受用户输入,调用客户端Geocode服务方法,然后将该信息传递到您的服务器应用程序,在那里可以对其进行处理,并希望对其进行缓存。这远非理想,但如果升级到 Google Maps API for Business 不是一种选择,它可能是唯一的出路。

祝你好运!

于 2013-06-04T00:36:59.030 回答
0

根据这篇文章,您的 API 密钥应该作为每天超过 25,000 次负载的请求的三个选项之一。

https://developers.google.com/maps/faq#usagelimits

于 2012-03-30T19:22:06.207 回答