从Google Maps API获取INVALID_REQUEST以获取有效地址

时间:2015-11-30 23:00:50

标签: php google-maps query-string

我正在使用Google Maps API进行一些测试,出于某种原因,有一些有效的地址会无缘无故地返回状态INVALID_REQUEST。这是我的PHP代码

    $request_url = "https://maps.googleapis.com/maps/api/geocode/xml?address=".urlencode($address);
    $xml = simplexml_load_file($request_url) or die("url not loading");
    $status = $xml->status;
    return $status;

$ address example:

    $address = "R. Espírito Santo, Viana, ES, Brasil" // status INVALID_REQUEST 

但如果我尝试直接访问该网址,则返回状态确定

https://maps.googleapis.com/maps/api/geocode/xml?address=R.%20Espírito%20Santo,%20Viana,%20ES,%20Brasil

对于某些地址,它返回OK,但对于其他人,INVALID_REQUEST使用完全相同的代码仅更改地址。直接访问URL总是返回OK。

任何线索?

谢谢

2 个答案:

答案 0 :(得分:0)

这是一个字符编码问题。 utf8_encode()(info)解决了它。

    $address = utf8_encode($address);

答案 1 :(得分:-1)

使用urlencode()info

$address     = "R. Espírito Santo, Viana, ES, Brasil" // this can't be passed as query string
$request_url = "https://maps.googleapis.com/maps/api/geocode/xml?address=".urlencode($address); // urlencode() solves this
$xml         = simplexml_load_file($request_url) or die("url not loading");
$status      = $xml->status;
return $status;