2013-10-30 172 views
3

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

,这是我使用的功能:

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; 
} 

中明确看起来请求URL是这样的: http://maps.googleapis.com/maps/api/geocode/xml?address=Dreik%C3%B6nigstra%C3%9Fe+12,+Erlangen&sensor=true

将是真棒,如果有人可以帮助我,或检测到错误:) 问候, 菲律宾

+0

检查$ Strasse和$ PLZ是有效的输入对于那些不工作(试戴比较那些做),这是最有可能的,如果它的问题一些时间工作。 – OMGtechy

+0

嗨,是的,我认为,但即使与消除空间和特殊字符theres没有变化:( –

回答

3

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

使用rawurlencode此:

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

嗨,你写这个我嗨得到它的工作,但你是对的我发送unncoded字符串和PHP无法取代任何特殊字符在将所有内容放在utf-8上之后都可以工作,谢谢! –