基本的に、郵便番号内の都市と州のリストを取得したいと思います。GoogleのGeocodeAPIはそうすることができますか?ドキュメントを調べてみましたが、情報が圧倒的であることがわかりました。
どんな助けでもいただければ幸いです。そのようなタスクを実行する別の方法がある場合は、私に知らせてください。
ありがとう
編集:http://maps.google.com/maps/geo?output = xml&q = 14606から市と州を取得できましたが、制限はありますか?
基本的に、郵便番号内の都市と州のリストを取得したいと思います。GoogleのGeocodeAPIはそうすることができますか?ドキュメントを調べてみましたが、情報が圧倒的であることがわかりました。
どんな助けでもいただければ幸いです。そのようなタスクを実行する別の方法がある場合は、私に知らせてください。
ありがとう
編集:http://maps.google.com/maps/geo?output = xml&q = 14606から市と州を取得できましたが、制限はありますか?
回答:
使用するジオコーディングAPIを
たとえば、zip 77379を検索するには、次のようなリクエストを使用します。
WebベースのAPIを使用してこれを行う方法をいくつか見つけました。郵便番号が彼らのものなので、米国郵政公社が最も正確だと思いますが、Ziptasticははるかに簡単に見えます。
XMLベースのWebAPI、具体的にはこのPDFドキュメントのセクション4.0(22ページ)を文書化した米国郵便サービスWebサイトのこのページによると、5桁の郵便番号を含むXML要求を送信できるURLがあります。対応する市と州を含む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を使用する前に登録する必要がありますが、私が知る限り、アクセスには料金はかかりません。ちなみに、彼らのAPIには他にもいくつかの機能があります。住所の標準化と郵便番号の検索だけでなく、追跡、配送、ラベルなどのスイート全体を実行できます。
更新:2017年8月13日の時点で、Ziptasticは有料APIになり、見つけることができます ここます
これはかなり新しいサービスですが、ドキュメントによると、次のように、GETリクエストをhttp://ziptasticapi.comに送信するだけでよいようです。
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));
}
数か月前、私は自分のプロジェクトの1つに同じ要件がありました。私はそれを少し検索し、次の解決策を見つけました。これが唯一の解決策ではありませんが、私はそれをより簡単なものの1つに見つけましたものの1。
http://www.webservicex.net/uszip.asmxのWebサービスを使用します。
具体的には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>
お役に立てれば...
geocoder.cit.api.here.com/6.2/geocode.json?PostalCode=2400&country=Denmark&app_id={APP_ID}&app_code={APP_CODE}&gen=9
ます(アドレス部分を指定できます)