我想获取某个邮编内城市和州的列表,谷歌的Geocode API能实现吗?我已经尝试研究了文档,但信息过于复杂。
如果有帮助的方法,请告诉我。感谢。
编辑:我通过以下方式获取了城市和州: http://maps.google.com/maps/geo?output=xml&q=14606 但是这样做会有限制吗?
我想获取某个邮编内城市和州的列表,谷歌的Geocode API能实现吗?我已经尝试研究了文档,但信息过于复杂。
如果有帮助的方法,请告诉我。感谢。
编辑:我通过以下方式获取了城市和州: http://maps.google.com/maps/geo?output=xml&q=14606 但是这样做会有限制吗?
我找到了几种使用Web API的方法。我认为美国邮政服务是最准确的,因为邮政编码是他们的专业,但Ziptastic更容易使用。
根据这篇美国邮政服务网站上记录其基于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>
在使用USPS API之前,USPS要求您先进行注册,但据我所知,访问API是免费的。此外,他们的API还有其他功能:您可以进行地址标准化和邮政编码查找,以及整套追踪、发货、标签等服务。
更新:自2017年8月13日起,Ziptastic现为付费API,网址为此处
这是一个相当新的服务,但根据他们的文档,似乎您只需要向http://ziptasticapi.com发送GET请求即可:
GET http://ziptasticapi.com/48867
他们会返回类似于以下的JSON对象:
{"country": "US", "state": "MI", "city": "OWOSSO"}
确实有效。你可以通过命令行测试,例如执行以下操作:
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));
}
GetInfoByZIP()
方法。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>
geocoder.cit.api.here.com/6.2/geocode.json?PostalCode=2400&country=Denmark&app_id={APP_ID}&app_code={APP_CODE}&gen=9
(您可以提供地址部分)。 - ᴍᴇʜᴏᴠ