据我所知,谷歌每天要求收取2,500张请求......但是,EARTH无法在今天提出这么多请求,而且我只是继续获得'OVER_QUERY_LIMIT'
$street_no = get_post_meta($prop->ID, 'street_no', true);
$street = get_post_meta($prop->ID, 'street', true);
$street_suffix = get_post_meta($prop->ID, 'street_suffix', true);
$addr = urlencode( $street_no." ".$street." ".$street_suffix." BC Canada" );
$url = 'http://maps.googleapis.com/maps/api/geocode/json?address='.$addr.'&sensor=true';
$json_result = json_decode(file_get_contents($url));
if ( $json_result->status === "OVER_QUERY_LIMIT" ) :
sleep(2);
$json_result = json_decode(file_get_contents($url));
endif;
正如你所看到的,如果我得到OVER_QUERY_LIMIT
的状态,我告诉脚本要睡2秒然后继续...这似乎在今天早上的某个时候起作用,但现在我可以甚至只能对一个地址进行地理编码。
我不知道此时该怎么做......这使我的申请完全无用。
答案 0 :(得分:5)
答案 1 :(得分:4)
配额由共享IP的所有用户共享,因此同一共享IP上的其他网站必须使用Google Geocoder。
有关详细信息,请参阅this thread in the Google Maps API v2 group。
BTW - 机架空间是猜测......
解决方法是使用基于客户端的地理编码,但验证您的使用是否符合使用条款。
webservice now supports a key,另一种选择是在请求中使用密钥,以便获得自己的配额。
答案 2 :(得分:1)
我用heroku托管的java应用程序遇到了类似的问题。我解决它的方法是设置一个微EC2实例并在其上安装Dante作为代理服务器运行。然后我只通过代理路由我的gecoding请求,并且每天可以完成2,000个请求。显然,值得缓存结果以最小化api调用。 EC2实例在第一年是免费的,之后仍然没有那么昂贵,你可以使用它不仅仅是Dante。
我已经在这里写了详细信息:Using Google geocoding from Heroku
答案 3 :(得分:0)
我在Heroku上的服务器上调用地理编码REST接口时遇到了同样的问题(在Amazon EC2上托管)
如果我可以在请求中使用我的Maps API密钥并且它们跟踪每个api密钥的呼叫数量,则可以修复此问题。
我同意这是一个严重的问题......
Bing,MapQuest和其他人都有免费的地理编码API - 你(和我)应该看看那些。
答案 4 :(得分:0)
您可以使用QuotaGuard之类的托管代理服务来停止来自共享IP的请求,这样您在使用Rackspace / Heroku等时就不会被Google阻止。