[英]OpenLayers 3 - Is there any quota limit like Google Maps?
[英]Detect Google Maps API quota limit
如果达到 Google Maps Javascript API V3 的配额,有人知道通过 Javascript 或 HTTP 请求进行测试的方法吗? 获取为用户显示的错误消息就足够了。
我们启用了计费并为 Google Maps Javascript API v3 设置了大约 100,000 个配额,但有时我们会破坏它,有时甚至没有意识到。 现在我们喜欢使用 nagios 之类的工具(可能通过使用 phantomjs)来监控我们的 api 访问以获得即时警告。 但是我找不到任何关于如何测试的信息,如果我们的配额已超过。
更新2
在这里找到了一个类似的请求:如何检测 Google 地图中已达到每天 25000 个请求的限制?
但是只有对 API-Console 的引用。 如果有人设法使用 Javascript 回退到静态地图,我可以针对我的情况修改脚本。
更新
这是谷歌地图的本地化配额错误消息的示例,它为用户而不是地图显示。 如果发生这样的事情,我宁愿删除地图容器:
我假设您想知道是否超出了 Google Maps API Web 服务请求限制。 这是官方文档所说的:
超出使用限制
如果超出使用限制,您将收到 OVER_QUERY_LIMIT 状态代码作为响应。
这意味着 Web 服务将停止提供正常响应并切换到仅返回状态代码 OVER_QUERY_LIMIT,直到再次允许更多使用。 这可能发生:
- 在几秒钟内,如果由于您的应用程序每秒发送的请求过多而收到错误。
- 在接下来的 24 小时内的某个时间,如果由于您的应用程序每天发送的请求过多而收到错误。 一天中的时间
服务的每日配额重置因客户和每个 API 而异,并且会随着时间的推移而变化。收到状态代码为 OVER_QUERY_LIMIT 的响应后,您的应用程序应确定超出了哪个使用限制。 这可以通过暂停 2 秒并重新发送相同的请求来完成。 如果状态代码仍为 OVER_QUERY_LIMIT,则您的应用程序每天发送的请求过多。 否则,您的应用程序每秒发送的请求过多。
和一个代码示例:
url = "MAPS_API_WEBSERVICE_URL"
attempts = 0
success = False
while success != True and attempts < 3:
raw_result = urllib.urlopen(url).read()
attempts += 1
# The GetStatus function parses the answer and returns the status code
# This function is out of the scope of this example (you can use a SDK).
status = GetStatus(raw_result)
if status == "OVER_QUERY_LIMIT":
time.sleep(2)
# retry
continue
success = True
if attempts == 3:
# send an alert as this means that the daily limit has been reached
print "Daily limit has been reached"
引自谷歌地图文档: https : //developers.google.com/maps/documentation/business/articles/usage_limits#limitexceeded
TLDR:发出请求,如果收到 OVER_QUERY_LIMIT 响应,请在两秒钟后重试。 如果响应仍然相同,则您已达到每日限制。
我根据观察到 Google 错误消息包含一个具有dismissButton
类属性的元素提出了一个解决方案。 使用 jQuery,它就像
var quota_exceeded = false;
$(document).ready( function() {
setTimeout(check_quota, 1000);
setTimeout(check_quota, 3000);
setTimeout(check_quota, 10000);
});
function check_quota() {
if (quota_exceeded) return;
if (typeof($("button.dismissButton")[0]) === "undefined") return;
quota_exceeded = true;
// you can even hijack the box and add to Google's message
$("button.dismissButton").parents("td").html(
"We have exceeded our quota!!!!!<p>" +
"<img src='https://c1.staticflickr.com/8/7163/6852688771_c90c9887c3.jpg'>" +
"<p><button class='dismissButton'>OK</button>");
$("button.dismissButton").click( function() {
$("button.dismissButton").parentsUntil("div").parent().hide();
});
}
确认,此JavaScript可以正常运行,并允许您将文本添加到Google警告弹出窗口。
我已经成功添加了指向备用OSM映射的链接,一旦我的配额用完,访问者就可以使用该映射。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.