我正在使用 Google Maps Javascript API V3 对页面上的许多位置 (~100) 进行反向地理编码。大约 10 次之后,我开始收到 620 错误:查询太多。
什么是延迟请求并确保它们全部完成的好方法,因为它们是异步的?
编辑: 这是我到目前为止所拥有的。大多数情况下,它会完成所有请求,但不会重试失败的请求。
function replaceAddresses() {
var delay = 0;
$(".lat-lon-address").each(function(index) {
window.setTimeout(queryGeocoder, delay, this);
delay += 1000;
});
}
function queryGeocoder(elem) {
geocoder.getLocations(new GLatLng(
elem.getAttribute("lat"),
elem.getAttribute("lon")),
function(response) {
handleAddress(response, elem);
});
}
function handleAddress(response, elem) {
if (!response || response.Status.code != 200) {
console.log("status code: " + response.Status.code)
} else {
place = response.Placemark[0];
point = new GLatLng(place.Point.coordinates[1],
place.Point.coordinates[0]);
elem.innerHTML = place.address;
}
}
最佳答案
上次我检查过你每天只允许 2500 个地理编码请求(基于你的 ip)。这对您来说应该足够了,但如果您使用更大的数据集,您可能需要购买更大的限制。
提示
在本地存储您的地理编码信息,也许在数据库中。从数据库中获取值而不是使用 Google 的网络服务。这样也会快得多。如果某个位置仅缺少地理信息,那么您应该对其进行地理编码。
当您编写一些使用地理编码的新代码时,不要对所有 600 个地址进行测试,首先尝试一个或两个地址,以确保您不会因一些功能失调的代码而不必要地耗尽每日津贴的一半。
如果可以,请在客户端进行地理编码,这不计入您的限制。
关于javascript - 620 : Too many queries using Google Maps API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908435/