我在申请中使用你的api有几个功能,即 - 获取前往目的地的路线 - 到达多个地点的距离 - 通过在地图上找到标记来接收位置地址
应用程序摘要(Local-Deals-Now)
该应用程序是一个免费应用程序,允许位于澳大利亚的本地企业发布与其业务相关的优惠/交易。用户可以创建一个企业帐户(免费)并提供其业务的位置(使用谷歌地图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。在谷歌上搜索问题(参考:https://developers.google.com/maps/documentation/javascript/usage)我已经掌握了,如果出现上述问题 - 每天的请求限制超过25 000个地图加载 要么 - 每秒发送太多请求
据我所知,应用程序不符合上述任何一项要求,但仍然收到警告。请让我知道我可以做些什么来解决这个错误
我是否必须购买营业执照 要么 如果我申请Google Earth Outeach Grant,目前申请是无利可图的 要么 只需继续,不做任何更改
以下是发送的示例请求:
请查看上面给出的信息。我们非常感谢您的反馈
提前致谢
答案 0 :(得分:1)
DistanceMatrix-Service的Limit不同:
100 elements per query.
100 elements per 10 seconds.
2 500 elements per 24 hour period.
因此,请先检查您要求的出发地/目的地数量。当origin *目的地超过100时,您应该已达到查询限制并且10秒。 在这种情况下(假设您只有1个来源),您要求多少“业务”?
修改强> 由于请求未超过查询限制/ 10秒,可能是您反复传递每日限制。您的请求返回12个元素,因此您将在24小时内超过约200个请求的限制,这可能发生吗?
答案 1 :(得分:1)
Dr.Molle说,有两个不同的限制。您超过了每日限制,允许在24小时内查询2500个元素。发生这种情况时,您将获得连续的OVER_QUERY_LIMIT错误,直到该24小时时间窗口到期并且您的配额刷新为止。
要注意的另一个限制是每10秒100个元素的短期限制。当你超过这个限制时,你会遇到OVER_QUERY_LIMIT错误几秒钟(即直到10秒窗口启动),然后你就可以再次使用该服务了。
如果这是一个面向用户的应用程序,它加载了Google Maps JavaScript API,并且由于某些用户操作而执行了这些距离矩阵查询,那么JavaScript Distance Matrix Service绝对值得探索。 JavaScript应用程序的限制是在您的网站用户之间分配的,而不是后端服务器。
答案 2 :(得分:0)
如果您与正在使用该服务的其他人共享托管,您可能会被标记为传递一个或其他限制。共享服务器可能意味着共享服务限制。