2014-10-28 30 views
1

我希望你能提供幫助。其實我試圖阻止Google Maps-Api-錯誤「OVER_QUERY_LIMIT」。我想用PHP來解決它,而不是使用Javascript和與超時玩耍等等。爲此,我已經取代了這一行:沒有OVER_QUERY_LIMIT錯誤的Google地圖的地理編碼 - 嘗試使用PHP解決方案

geocoder.geocode({'address': address}, function(results, status) { 

在我的劇本有這樣一條:

var url_addr = encodeURIComponent(address); 
$.getJSON('geocode.php?addr='+url_addr, function(data) { 
var results = data.results, 
    status = data.status; 

此外,我有一個PHP腳本用於獲取地理編碼座標:

$params = "address=" . urlencode($_GET{'addr'}); 
$url = 'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&' . $params; 
$json = file_get_contents($url); 
$status = json_decode($json)->status; 

// check for over_query_limit status 
while ($status=="OVER_QUERY_LIMIT") { 
sleep(0.2); // seconds 
$json = file_get_contents($url); 
$status = json_decode($json)->status; 
} 

header('application/json'); 
echo $json; 

運行此之後,我可以看到在調試器控制檯稱爲PHP腳本上的URL L上的附着地理編碼座標ike /geocode.php?addr=432345 ...

接下來在我的JS腳本中,我想檢查google.maps.GeocoderStatus是否正常。所以我打電話:

if (status == google.maps.GeocoderStatus.OK) { 
    if (results[1]) { 
    console.log("Everything OK"); 
    } 
    else { 
    console.log("Geocode is not OK"); 
    } 

但沒有任何反應。看來,這種狀態不會到達if-else。我玩了一下,試圖找出與「螢火蟲」的東西,但我沒有找到答案。

你有什麼想法嗎?

謝謝和問候, 斯特凡

+0

爲什麼你會得到'OVER_QUERY_LIMIT'?爲什麼服務器端地理編碼解決了這個問題?也許這可能是一個有趣的閱讀:https://developers.google.com/maps/articles/geocodestrat – MrUpsidown 2014-10-28 17:46:43

+0

我不知道爲什麼我會得到這個錯誤。我閱讀了很多關於這個問題的文章,並注意到提到服務器端地理編碼的很多解決方法可以避免使用js進行處理。我不知道這是否真的如此,但我想證明,嘗試和學習:-) – 2014-10-28 18:05:12

+0

好吧,我讀了這篇文章。它不會使服務器端地理編碼產生意義......謝謝你,斯蒂芬 – 2014-10-28 18:44:24

回答

1

我建議你使用你的谷歌API的關鍵在你的PHP。

https://maps.google.com/maps/api/geocode/json?address=".$params."&key=".$key."&sensor=false 

$鍵=您的谷歌API密鑰

這將幫助你防止OVER_QUERY_LIMIT錯誤。

相關問題