【发布时间】:2016-10-24 06:21:55
【问题描述】:
我目前正在使用谷歌地图 API 进行地理编码 php 函数。奇怪的是,file_get_contents() 返回 bool(false) 而我使用的 url 编码正确,我认为。
在我的浏览器中,当我测试代码时,页面需要很长时间才能加载,并且地理编码不起作用(当然,鉴于 API 没有给我想要的东西)。
我也试过用curl,目前没有成功。
如果有人可以帮助我,那就太好了!
非常感谢。
代码:
function test_geocoding2(){
$addr = "14 Boulevard Vauban, 26000 Valence";
if(!gc_geocode($addr)){
echo "false <br/>";
}
}
function gc_geocode($address){
$address = urlencode($address);
$url = "http://maps.google.com/maps/api/geocode/json?address={$address}";
$resp_json = file_get_contents($url);
$resp = json_decode($resp_json, true);
if($resp['status']=='OK'){
$lati = $resp['results'][0]['geometry']['location']['lat'];
$longi = $resp['results'][0]['geometry']['location']['lng'];
if($lati && $longi){
echo "(" . $lati . ", " . $longi . ")";
}else{
echo "data not complete <br/>";
return false;
}
}else{
echo "status not ok <br/>";
return false;
}
}
更新:问题确实是我在代理后面。我用另一个网络测试过,它工作正常。 但是,您对我返回的内容以及我如何测试成功的回答也非常好,并且将帮助我改进代码。
非常感谢!
【问题讨论】:
-
很可能您正在使用一些互联网代理。 stackoverflow.com/questions/5211887/how-to-use-curl-via-a-proxy
-
你永远不会在函数
gc_geocode()中返回除false以外的任何东西...你echo其他东西,但之后永远不会返回true -
试试
if (gc_geocode($addr) === false)
标签: php api google-maps geocoding