2013-02-08 54 views
2

據我所知,谷歌帽請求到2500,每天...但沒有辦法在地球上,我做了,今天的許多要求,我只是不斷收到「OVER_QUERY_LIMIT」谷歌地圖的地理編碼狀態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

請求的來源是哪裏?你的服務器?你的桌面?你的手機?您在rackspace.com上的共享主機? – geocodezip 2013-02-08 23:00:35

+0

請求是從雲計算站點上的機架空間進行的,是的。其中,當我開始輸入時,開始有意義的是,在查詢地理編碼api的同一IP上可能有其他人。 – dcolumbus 2013-02-08 23:08:00

回答

4

配額在共享IP的所有用戶中共享,在共享相同IP使其他網站必須使用谷歌地理編碼。

查看this thread in the Google Maps API v2 group瞭解更多信息。

BTW - Rackspace公司是一個猜測...

一種解決方法是使用基於客戶端的地理編碼,但驗證您的使用與使用條款的規定。

webservice now supports a key,另一種選擇是在您的請求中使用密鑰,以便獲得自己的配額。

0

我有同樣的問題,從在Heroku上的服務器進行調用地理編碼REST接口(託管在亞馬遜EC2)

這可能是固定的,如果我可以用我的地圖API密鑰的請求,他們跟蹤每個API密鑰的調用次數。

我同意這是一個嚴重的問題......

Bing,MapQuest的等都有免費的API地理編碼 - 你(我)應該看那些。

1

我遇到了類似的問題,這與我的heroku託管的Java應用程序。我解決這個問題的方式是建立一個微EC2實例並安裝Dante作爲代理服務器運行。然後,我只需通過代理路由我的地理編碼請求,並可以每天完成2,000條請求。顯然,值得緩存的結果是儘量減少api調用。 EC2實例在第一年是免費的,在那之後仍然不那麼昂貴,您可以隨時將它用於Dante。

我寫我如何設置此位置的詳細信息:Using Google geocoding from Heroku

0

您可以使用託管代理服務像QuotaGuard這將阻止你的請求從一個共享IP來得那麼你不要阻止谷歌當使用Rackspace/Heroku等。