我正在使用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;
}
}
答案 0 :(得分:2)
上次检查时,每天只允许2500个地理编码请求(根据您的IP)。这对您来说应该足够了,但如果您使用更大的数据集,则可能需要购买更大的限制。
<强>提示强>
将您的地理编码信息存储在本地,可能存储在数据库中。从数据库中获取值而不是使用Google的Web服务。这种方式也会快得多。如果某个位置缺少地理信息,那么您应该对其进行地理编码。
当您编写一些使用地理编码的新代码时,请不要使用所有600个地址对其进行测试,首先尝试使用一个或两个地址,以确保您不会不必要地使用一些功能失常的代码来节省一半的每日限额。
如果可以,请执行地理编码客户端,这不会计入您的限制。
答案 1 :(得分:1)
如果你得到620,你可能需要限制或减少请求数量。
您的实施是否符合服务条款?我没有看到任何代码在地图上显示这些结果(根据ToS)。