【问题标题】:Do Google API keys work with Google Maps web services, e.g. geocoding?Google API 密钥是否适用于 Google 地图网络服务,例如地理编码?
【发布时间】:2012-03-30 19:13:08
【问题描述】:

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

我从 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 when i include key=my_api_key

【问题讨论】:

标签: google-maps google-geocoding-api


【解决方案1】:

不,你没有做错任何事。

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

等等,情况会变得更糟。

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

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

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

祝你好运!

【讨论】:

  • 似乎确实如此。我们现在有了营业执照。
  • 我昨天发现了您的问题,因为我试图解决与您相同的限制。我对 OEM 定价感到有些震惊。 ;-) 希望你们的情况不会太糟糕。
  • @VivekM.Chawla 你能看看这个关于地理编码器类api限制的问题stackoverflow.com/questions/54144432/…
【解决方案2】:

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

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

【讨论】:

  • 使用 Maps-API 和请求地理编码服务是两件不同的事情。 maps-API 列在 API 控制台中并接受密钥,而地理编码服务不接受。
  • 我希望它确实会为地理编码 Web 服务 API 授予更高的配额限制,但正如 @Dr.Molle 指出的那样,它似乎不起作用。也许它会在未来的更新中出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多