Google Maps API会在有效请求中返回“无效请求”

时间:2013-10-30 10:33:47

标签: php google-maps google-api reverse-geocoding

我正在尝试为我的数据库反转地理编码一堆地址。我有大约200个地址,其中一半的工作就像一个魅力..我确实把谷歌地图请求放在一个循环中,它的工作原理。大约有100个地址返回了“无效请求”消息。我回应了请求网址并将其放入浏览器中并返回“状态:确定”和所有数据。为什么我的脚本返回无效请求而另一个浏览器选项卡返回OK?

这就是我使用的功能:

function getLatLon($strasse, $plz) {
    $inhalt = simplexml_load_file('http://maps.googleapis.com/maps/api/geocode/xml?address='.$strasse.',+'.$plz.'&sensor=true');

    $geo['lat'] = $inhalt->result->geometry->location->lat;
    $geo['lon'] = $inhalt->result->geometry->location->lng;

    return $geo;
}

明确的请求网址如下所示: http://maps.googleapis.com/maps/api/geocode/xml?address=Dreik%C3%B6nigstra%C3%9Fe+12,+Erlangen&sensor=true

如果有人可以帮助我或发现错误,那会很棒:) 问候, 菲利普

1 个答案:

答案 0 :(得分:3)

我很确定错误是由您发送的未编码的德语字符引起的。当您通过浏览器执行此操作时,URL将自动编码,但不会由PHP脚本自动编码。

使用rawurlencode

$inhalt = simplexml_load_file('http://maps.googleapis.com/maps/api/geocode/xml?'.
                              'address='.rawurlencode($strasse).',+'.
                              rawurlencode($plz).'&sensor=true');