查找城市和国家邮编谷歌地理编码Api

我基本上想要检索一个邮政编码内的城市和州的名单。 Google的Geocode API是否可以这样做? 我试过查看文档,但发现信息压倒性的。

任何帮助,将不胜感激。 如果还有其他的方法来完成这个任务,请告诉我。

谢谢

编辑:我能够通过检索城市和国家: http : //maps.google.com/maps/geo ? output=xml&q=14606但有没有限制呢?

使用GeoCoding API

例如,要查找邮编77379使用这样的请求:

http://maps.googleapis.com/maps/api/geocode/json?address=77379&sensor=true

我发现了几种使用基于web的API来实现这一点的方法。 我认为美国邮政服务是最准确的,因为邮政编码是他们的事情,但Ziptastic看起来更容易。

使用美国邮政服务HTTP / XML API

根据美国邮政服务网站上的这个页面,它logging了他们的基于XML的Web API ,特别是这个PDF文档的第4.0节(第22页),他们有一个URL可以发送一个包含5位数字邮政编码的XML请求,用包含相应的城市和州的XML文档进行响应。

根据他们的文件,这是你会发送:

 http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=<CityStateLookupRequest%20USERID="xxxxxxx"><ZipCode ID= "0"><Zip5>90210</Zip5></ZipCode></CityStateLookupRequest> 

以下是您将收到的回复:

 <?xml version="1.0"?> <CityStateLookupResponse> <ZipCode ID="0"> <Zip5>90210</Zip5> <City>BEVERLY HILLS</City> <State>CA</State> </ZipCode> </CityStateLookupResponse> 

美国邮政确实要求您在使用该API之前向他们注册,但据我所知,这是不收费的。 顺便说一句,他们的API还有一些其他的function:你可以做地址标准化和邮政编码查询,以及整套跟踪,运输,标签等。

使用Ziptastic HTTP / JSON API( 不再支持

更新:截至2017年8月13日,Ziptastic现在是一个付费API,可以在这里find

这是一个相当新的服务,但根据他们的文档,看起来你所要做的就是向http://ziptasticapi.com发送GET请求,如下所示:;

 GET http://ziptasticapi.com/48867 

他们将返回一个JSON对象的行:

 {"country": "US", "state": "MI", "city": "OWOSSO"} 

事实上,它的工作。 你可以通过执行如下命令来从命令行testing:

 curl http://ziptasticapi.com/48867 
 function getCityState($zip, $blnUSA = true) { $url = "http://maps.googleapis.com/maps/api/geocode/json?address=" . $zip . "&sensor=true"; $address_info = file_get_contents($url); $json = json_decode($address_info); $city = ""; $state = ""; $country = ""; if (count($json->results) > 0) { //break up the components $arrComponents = $json->results[0]->address_components; foreach($arrComponents as $index=>$component) { $type = $component->types[0]; if ($city == "" && ($type == "sublocality_level_1" || $type == "locality") ) { $city = trim($component->short_name); } if ($state == "" && $type=="administrative_area_level_1") { $state = trim($component->short_name); } if ($country == "" && $type=="country") { $country = trim($component->short_name); if ($blnUSA && $country!="US") { $city = ""; $state = ""; break; } } if ($city != "" && $state != "" && $country != "") { //we're done break; } } } $arrReturn = array("city"=>$city, "state"=>$state, "country"=>$country); die(json_encode($arrReturn)); } 

几个月前,我对我的一个项目有同样的要求。 我search了一下,发现了下面的解决scheme。 这不是唯一的解决scheme,但我发现它是一个更简单的解决scheme之一。

使用http://www.webservicex.net/uszip.asmx上的webservice。;
具体的GetInfoByZIP()方法。

你将能够查询任何邮政编码( ex: 40220 ),你将有一个回应,如下所示…

 <?xml version="1.0" encoding="UTF-8"?> <NewDataSet> <Table> <CITY>Louisville</CITY> <STATE>KY</STATE> <ZIP>40220</ZIP> <AREA_CODE>502</AREA_CODE> <TIME_ZONE>E</TIME_ZONE> </Table> </NewDataSet> 

希望这可以帮助…