我正在尝试为我的数据库反转地理编码一堆地址。我有大约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
如果有人可以帮助我或发现错误,那会很棒:) 问候, 菲利普
答案 0 :(得分:3)
我很确定错误是由您发送的未编码的德语字符引起的。当您通过浏览器执行此操作时,URL将自动编码,但不会由PHP脚本自动编码。
使用rawurlencode:
$inhalt = simplexml_load_file('http://maps.googleapis.com/maps/api/geocode/xml?'.
'address='.rawurlencode($strasse).',+'.
rawurlencode($plz).'&sensor=true');