Google Javascript API地理编码限制

时间:2013-11-20 05:17:23

标签: google-maps google-maps-api-3 geocoding

使用Google Maps JavaScript API v3进行客户端地理编码的限制是什么?


我的研究:

  1. Google Maps PHP API每天限制2500个地理编码请求(https://developers.google.com/maps/documentation/geocoding/#Limits
  2. Google Maps Javascript API v3每天限制为25000 地图加载https://developers.google.com/maps/documentation/javascript/usage
  3. Google建议使用javascript API进行地理编码,以避免通过PHP API实现2500限制。它声明“运行客户端地理编码,您通常不必担心配额”(https://developers.google.com/maps/articles/geocodestrat#client
  4. 但是,在任何文档中都没有通过Google Maps JavaScript API v.3说明地理编码限制是什么。

    (这一直困扰着我一段时间,而且我不止一次研究过它而未能找到可靠的答案)

5 个答案:

答案 0 :(得分:71)

我在Google的Google地图商务支持部门工作。以下是我个人的意见,而不是Google的意见,但我只想说我对这个话题非常熟悉!

首先,区分client-side geocoding(对google.maps.Geocoder的JavaScript调用)和server-side geocoding(对/ maps / api / geocode的HTTP请求)非常重要。这个问题和答案专门针对客户端地理编码;有关服务器端限制,请参阅here。特别是,经常提到的每个IP每天2,500个请求限制仅 到服务器端地理编码,而不是客户端。

简而言之,没有专门针对客户端地理编码的文档查询限制。一旦客户端加载了Google Maps JavaScript API库,它就可以根据需要制作尽可能多的地理编码请求,只要它们以理智的速度完成。两个经验法则,以确保您不会遇到问题:

  1. 启动地理编码以响应用户互动,即使有短暂的请求突发(例如,点击按钮对几个地址进行地理编码),您也会很好。
  2. 捕获任何OVER_QUERY_LIMIT错误并妥善处理它们(例如指数退避)。 Here是Python中的一些示例代码。
  3. 但是请不要试图忙于循环地理编码器或将其锤击几个小时,有防止滥用的保护措施。

    <强>更新

    截至2017年,客户端配额是根据相应的Web服务配额计算的。请看看Christophe Roussy的答案。

答案 1 :(得分:9)

始终阅读官方Google网站上的最新信息,了解正确的API版本,过时的stackoverflow答案不是最新的参考! !

https://developers.google.com/maps/documentation/geocoding/usage-limits

以下是我写这篇答案时所说的内容:

  

Google Maps Geocoding API使用限制

     

每天2,500个免费请求,以客户端和总和计算   服务器端查询。

     

每秒50个请求,以客户端和总和计算   服务器端查询。

     

启用“即用即付”结算以解锁更高的配额:

     

$ 0.50 USD / 1000个额外请求,每天最多100,000个。

总的来说,只要查询来自真实的人类用户,Google就会感到高兴,因为这对他们有一定的价值。

还有一些方法可以通过缓存最多30天的结果来保存一些请求: https://developers.google.com/maps/premium/optimize-web-services#optimize

答案 2 :(得分:2)

基于https://developers.google.com/maps/articles/geocodestrat

  

通过浏览器的客户端地理编码是每个地图的速率限制   会话,因此地理编码分布在您的所有用户和   与您的用户群一起扩展。

那么,每个地图会话的速率限制是多少?

  

由于地理编码限制是按用户会话进行的,因此不存在您的风险   随着用户群的增长,应用程序将达到全局限制。   客户端地理编码不会面临配额限制,除非您执行   用户会话中的批量地理编码请求。因此,跑步   客户端地理编码,您通常不必担心您的   配额。

好的,限制是什么?我们走了

https://developers.google.com/maps/documentation/business/articles/usage_limits

  

在发送第11个时,速率限制或10 QPS(每秒查询数)   请求您的应用程序应检查第一个的时间戳   请求并等待1秒钟过去。同样应该适用   到了每日限制。

还不清楚?我也是。

这是我从他们的文档中找到的壁橱答案,它说“每秒10个请求的速率限制”

https://developers.google.com/maps/documentation/business/webservices/quota

我不认为用户会话每秒可以发送10个请求,因此我认为它是无限的。

答案 3 :(得分:0)

我最近问过这个地方图书馆(或者更确切地说,研究了它并得出结论):

Regarding Places Library for Google Maps API Quota limits

基本上,似乎带有密钥的Map加载限制为每个域每天25,000(这可能不对,但我很确定这种情况)。

地理编码限制以下列方式受到限制:

如果您在未设置结算的情况下使用API​​密钥,则

2,500 如果您使用的是API密钥且已设置结算

,则为100,000

如果您正在进行服务器端地理编码(预缓存结果或类似结果),那么您的地理编码是按域进行的,并且您将很快耗尽请求。 (例如,如果您正在使用REST API执行场所请求,请执行以下操作:https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=XXXX

如果您正在使用javascript库,请使用自动填充功能或PlacesService,如下所示:

service = new google.maps.Geocoder();

然后是每个最终用户的限制(分别为2,500或100,000),因此您的限制会随您的用户群而变化。

答案 4 :(得分:-3)

根据the article you linked何时使用服务器端地理编码):

  

2,500个请求限制是每个IP地址。

那么 - 你到底是什么意思?托管应用程序或运行它的客户端的限制?

上面的陈述告诉我 对“主机”没有限制;如果没有密钥或可强制执行的引荐来源网址,Google就没有(良好的)方法来确定地理编码请求的来源。除了其他方面,这就是REST的美丽。

它还告诉我,即使他们可以强制执行,他们也没有设置限制。这可能会对他们的商业模式产生反作用。