gpt4 book ai didi

jquery - 地理编码超出查询限制解决方法

转载 作者:行者123 更新时间:2023-12-01 07:22:57 25 4
gpt4 key购买 nike

我正在尝试对 1,000 多个地址进行地理编码并将这些值存储在 XML 文件中。问题是我在第十个地址之后收到 OVER_QUERY_LIMIT 错误。我看过其他帖子建议在每个地理编码之间等待 X 秒,但这似乎对我不起作用。这是我的一段代码:

<div id="locations"></div>
$(xml).find('marker').each(function (i)
{
var storeName = $(this).attr('name');
var address = $(this).attr('address');

setTimeout(function(){
g.geocode(address, function(data)
{
if(data != null)
{
olat = data.latitude;
olng = data.longitude;

var marker = "<marker name='" + storeName + "' lat='" + olat + "' lng='" + olng + "' />";

$('#locations').append(marker);
}
else
{
//Unable to geocode
alert('ERROR! Unable to geocode address');
}
});
}, 1000);
});

最佳答案

首先是关于 Google's Terms of Service 的注释

人们很容易不去想这样的事情,但有时它确实很重要。除非你想加入this group from earlier today由于某种原因其服务被禁用,请确保在对这些地址进行地理编码时向用户显示 map 。 TOS 还禁止批量地理编码和存储结果用于性能缓存以外的任何用途。

不是指责!只是引起注意。

<小时/>

程序员回答:

setTimeout 的回调和 geocode 都是异步函数。现在使用您的代码,虽然响应仍然从 API 返回,但您正在启动 1 秒计时器,该计时器也异步运行,同时您的循环继续立即迭代,没有延迟。一秒后,无操作被调用一次然后被丢弃。每次运行循环时都会发生这种情况。

因此您一次发出了一千个 API 请求。然后大约 1 秒后(大约几毫秒),将运行 1,000 个无操作。

您对g.geocode的调用需要在setTimeout的回调函数内部,然后回调函数的末尾需要设置另一个超时时间直到完成为止。不再有空操作。

如果您想更正确地“解决”OVER_QUERY_LIMIT 错误和其他 TOS 限制(例如地理编码整体),您需要考虑商业服务没有这样的限制,比如 LiveAddress (披露:我在 SmartyStreets 工作)。

关于jquery - 地理编码超出查询限制解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11875173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com