3

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

这就是我使用的功能:

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

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

4

1 回答 1

3

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

为此使用rawurlencode

$inhalt = simplexml_load_file('http://maps.googleapis.com/maps/api/geocode/xml?'.
                              'address='.rawurlencode($strasse).',+'.
                              rawurlencode($plz).'&sensor=true');
于 2013-10-30T10:51:51.887 回答