2012-11-20 201 views
1

这是我发现的一个随机地址不起作用,但地址存在正常。谷歌地图地理编码没有返回结果

“团队谷商贸地产,盖茨黑德,泰恩河和穿戴NE92 1DG,英国”

你们可以尝试地理编码是,并告诉我,如果你的作品,我有13个地址,12个工作,这1个没有按“T?

这就是我正在做的地址解析请求的代码:

class geocoder{ 
    static private $url = "http://maps.google.com/maps/api/geocode/json?sensor=true&address="; 

    static public function getLocation($address){ 
     $url = self::$url.urlencode($address); 

     $resp_json = self::curl_file_get_contents($url); 
     $resp = json_decode($resp_json, true); 

     if($resp['status']='OK'){ 
      return $resp['results'][0]['geometry']['location']; 
     }else{ 
      return false; 
     } 
    } 

    static private function curl_file_get_contents($URL){ 
     $c = curl_init(); 
     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($c, CURLOPT_URL, $URL); 
     $contents = curl_exec($c); 
     curl_close($c); 

     if ($contents) return $contents; 
      else return FALSE; 
    } 
}  


$address = urlencode("Team Valley Trading Estate, Gateshead, Tyne and Wear NE92 1DG, UK"); 
$loc = geocoder::getLocation($address); 

这证明地址存在: http://maps.google.co.uk/maps?q=%22Team+Valley+Trading+Estate,+Gateshead,+Tyne+and+Wear+NE92+1DG,+UK%22&hl=en&sll=53.103814,-2.278518&sspn=10.722701,33.815918&t=h&hnear=NE92+1DG,+United+Kingdom&z=16

这证明地理编码类应该返回数据:

http://maps.google.com/maps/api/geocode/json?sensor=true&address=Team%20Valley%20Trading%20Estate,%20Gateshead,%20Tyne%20and%20Wear%20NE92%201DG,%20UK

+0

我是双endcoding的URL编地址...... ****** *鞠躬耻辱*。新手会成为新手。 – Jimmyt1988

+0

我刚刚在我的网站原型和地址上试了一下,返回坐标,administrative_area_level_2(省/县)和邮政编码正确,所以问题应该在你的脚本中,也许这是urlencode是什么让它变得混乱,不知道。 我可以链接我的网站,所以你可以看到我的代码(虽然它不是面向对象,更基本/简单/比你更imo,但它工作xD),如果你请求它,我不想把网址放在第一cos它会看起来像垃圾邮件xD – aleation

+0

当地理编码时,我总是试图获得最重要的信息,字符串的开始(国家,地区,街道名称,街道号码),如果我没有找到任何东西我删除最后一句话字符串,然后再试一次。 – Naryl

回答

2

你是urlencod '荷兰国际集团的地址两次,以改变:

$address = urlencode("Team Valley Trading Estate, Gateshead, Tyne and Wear NE92 1DG, UK"); 

$address = "Team Valley Trading Estate, Gateshead, Tyne and Wear NE92 1DG, UK"; 

因为你已经urlencod' 你getLocation功能