2014-10-28 60 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错误。

相关问题