我正在做项目,我需要用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
答案 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