PHP Google Maps Api在有效请求中返回ZERO_RESULT

时间:2014-05-26 20:48:25

标签: php google-maps

我正在做项目,我需要用lat lng的地址填充我的数据库。我决定使用PHP和地理编码,我有很大的问题。 PHP脚本返回ZERO RESULT,但是当我尝试使用Web浏览器时,我得到了正确的结果。

$fulladdress = $street.$city;
$request= "http://maps.googleapis.com/maps/api/geocode/xml?address=".rawurlencode($fulladdress)."&sensor=true";
$xml = simplexml_load_file($request) or die("url not loading");

当我打印$ fulladdress,$ request和xml状态时,我有这个:

?apino Kartuskie http://maps.googleapis.com/maps/api/geocode/xml?address=%3Fapino%20Kartuskie&sensor=true状态:ZERO_RESULTS

3 个答案:

答案 0 :(得分:1)

您需要翻译波兰字符,您可以使用http://php.net/manual/en/function.iconv.php

$fulladdress = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $street.$city);
$request= "http://maps.googleapis.com/maps/api/geocode/xml?address=".rawurlencode($fulladdress)."&sensor=true";
$xml = simplexml_load_file($request) or die("url not loading");

答案 1 :(得分:1)

事实证明,如果google maps api的查询/响应有一些变音符号,则必须包含http标题“Accept-Language”。在我的情况下:

不起作用:

curl -s 'http://maps.googleapis.com/maps/api/geocode/json?address=ul.+Zwyciestwa+44%2C+Dobre+Miasto'

工作:

curl -s \
'http://maps.googleapis.com/maps/api/geocode/json?address=ul.+Zwyciestwa+44%2C+Dobre+Miasto' \
-H 'Accept-Language: pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4'

答案 2 :(得分:0)

您需要使用UTF-8进行编码。

http://maps.googleapis.com/maps/api/geocode/xml?address=%C5%81apino%20Kartuskie&sensor=true