首先是OVER_QUERY_LIMIT

时间:2016-06-22 12:14:14

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

我使用Google地理编码API对多个地址进行地理编码。所以我所做的就是顺序提出请求,一旦我获得OVER_QUERY_LIMIT状态,我就会冷却1.5秒然后继续。

根据文档(https://developers.google.com/maps/documentation/geocoding/usage-limits),我应该能够达到10req / s,这对于第一次请求是正确的,但是一旦我第一次达到限制,我只能做2-3次请求在我再次获得OVER_QUERY_LIMIT之前。使用10req / s,我原本以为我可以制作20req / 2s,30req / 3s等等,但似乎并非如此。

我错过了什么或这是预期的行为吗?

如果我有高级帐户,我会有同样的行为吗?所以我在第一秒获得50req但是限制会减少吗?

编辑: 这就是我的地理编码请求的样子

var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address}, function(result, status) {
    if(status === google.maps.GeocoderStatus.OK) {
        // Yippee
    } else if (status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
        // Wait 1.5s then retry address
    } else {
        // Crap!
    }
}

1 个答案:

答案 0 :(得分:2)

您正在检查Web服务的文档。实际上,Web服务有10个QPS使用限制,但客户端实现是不同的。

从JavaScript客户端地址解析器服务,您可以立即执行10个请求的桶,之后桶以每秒1个请求的速率重新填充。这是为人工交互而设计的,您无法使用客户端服务执行批量地理编码。

所以这是预期的行为。