状态QUERY_OVER_LIMIT从谷歌地图API V3
我使用自己的API在我的几个功能应用,即 响应 - 获取到目的地的方向 - 获取距离几个位置 - 接收位置的地址通过定位与地图上的标记状态QUERY_OVER_LIMIT从谷歌地图API V3
应用概要(本地优惠现在)
应用程序是一个免费的应用程序,允许位于澳大利亚当地企业,发布有关他们的商业计划书/交易。用户可以创建一个商业账户(免费),并提供他们的业务位置(使用谷歌地图API),并按日期和时间向系统添加优惠/交易。公共用户/消费者可以查看这些优惠(或按距离,位置,日期,关键字等进行搜索:-....距离当前用户位置的优惠的距离是使用distancematrix api计算的)。
上述应用程序目前正处于开发阶段,可通过http://www.chuli.fclhosting.com/进行访问。面临的问题是使用距离矩阵API从当前登录的用户位置计算到业务的距离。我在服务器端使用的API如下
$curl = curl_init();
$uri = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=".$originString."&destinations=".$destinationsString."&mode=driving&language&sensor=false";
die($uri);
$options = array(
CURLOPT_URL => $uri,
CURLOPT_HTTPHEADER => array(),
CURLOPT_COOKIE => '',
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($curl, $options);
$responseBody = curl_exec($curl);
$responseHeaders = curl_getinfo($curl);
$data = $responseBody;
$responseContentType = $responseHeaders['content_type'];
if ((strpos($responseContentType, 'json') !== false) || (substr(html_entity_decode(trim($data)), 0, 1) == "{")) {
$jsonData = json_decode($data, true);
if (!is_null($jsonData)) {
$data =$jsonData;
}
}
for ($i = 0; $i < count($data['origin_addresses']); $i++) {
for ($j = 0; $j < count($data['destination_addresses']); $j++) {
$from = $data['origin_addresses'][$i];
$to = $data['destination_addresses'][$j];
if($data['rows'][$i]['elements'][$j]['status']=="OK" && $data['rows'][$i]['elements'][$j]['distance']['value']<= ($distance*1000)) {
$businessDistanceArray[$businesses[$j]->getId()] = $data['rows'][$i]['elements'][$j]['distance']['text'];
} else {
$businessDistanceArray[$businesses[$j]->getId()] = sfConfig::get('app_offer_not_applicable');
}
}
}
由于最近我开始接收警告/错误,指出OVER_QUERY_LIMIT。对这个问题使用Google(参考文献:https://developers.google.com/maps/documentation/javascript/usage)后,我已掌握的是,发生上述问题,或者如果 每天--the请求限制超过25个000的地图加载 OR - 截至每秒
发送过多的请求据我所知,申请不符合上述任何一项要求,但仍收到警告。请让我知道我可以就这个问题做的,以克服这种错误
我是不是要购买营业执照 或 由于目前的应用程序是一个非盈利的一个,我应该申请谷歌地球Outeach格兰特 OR 只是继续没有任何改变
下面是发送一个请求示例:
请看上面给出的信息。您的意见将被彻底我们赞赏提前
像Dr.Molle说有两种不同的限制。您超过了允许在24小时内查询2500个元素的每日限制。发生这种情况时,您将持续发生OVER_QUERY_LIMIT错误,直到该24小时时间窗口过期并刷新配额。
另一个要留意的限制是每10秒100个元素的短期限制。当您超过此限制时,您会在几秒钟内遇到OVER_QUERY_LIMIT错误(即直到10秒的窗口启动),然后您才能够再次使用该服务。
如果这是一个面向用户的应用程序,加载Google Maps JavaScript API并执行这些距离矩阵查询是由于某些用户操作的结果,那么JavaScript Distance Matrix Service绝对值得探索。 JavaScript应用程序的限制分配给您的网站用户,而不是后端服务器。
的Limit为DistanceMatrix-服务
由于是不同的:
100 elements per query.
100 elements per 10 seconds.
2 500 elements per 24 hour period.
所以请首先,你有多少个起点/目的地请求。当来源*目的地超过100个时,您应该达到查询限制和10秒。 在这种情况下(假设您只有1个出身地点),您要求多少“企业”?
编辑: 由于请求不超过查询/ 10秒的限制,这可能是因为你反复通过日常的限制。您的请求会返回12个元素,因此您将在24小时内超过200个请求的限制,发生这种情况吗?
我改变了我的算法,以便我可以克服极限 – nmeegama 2012-03-29 04:32:30
@ Dr.Molle这个限制是基于deivce id(Android设备)还是映射键在清单中使用?此外,上面提到的元素是查询中的元素还是元素的响应? Bcoz,谷歌没有明确提到我们收到的任何回应内容..请让我知道..谢谢 – 2013-12-02 05:44:44
关键并不重要,当您通过服务器请求Web服务时,限制将通过服务器共享-IP,当您通过JavaScript的Maps-API在客户端使用它时,限制将以每个用户为限。这些限制不适用于手机API。与元素相关:限制适用于查询中的元素,因此当您通过1个请求查询10个来源和11个目的地,达到请求限制。 – 2013-12-02 09:25:48
如果您与正在使用该服务的其他人共享主机,则可能会被标记为传递一个或其他限制。共享服务器可能意味着共享服务的限制。
Ohh ..谢谢你的信息。但是,没有一个子域使用Google地图服务 – nmeegama 2012-03-29 04:31:37
我已经体验了24小时窗口,所以我必须放弃允许在24小时内查询2500个元素的每日限制 – nmeegama 2012-03-29 04:34:38