ProgramingTip

우편 번호로 도시 및 주 조회 Google Geocode API

bestdevel 2020. 10. 18. 18:55
반응형

우편 번호로 도시 및 주 조회 Google Geocode API


기본적으로 우편 번호 내에서 도시 및 주 목록을 검색하고 싶습니다. Google의 Geocode API가 그렇게 할 수 있습니까? 문서를 개최했지만 정보가 압도적이라는 것을 알았습니다.

어떤 도움을 주시면 감사하겠습니다. 대신 작업을 수행하는 다른 방법이 있으면 알려주십시오.

감사합니다

편집 : http://maps.google.com/maps/geo?output=xml&q=14606을 통해시와 주를 검색 할 수 있었지만 이에 대한 제한이 있습니까?


사용 지오 코딩 API를

예를 들어 zip 77379를 구매 한 다음과 같은 요청을 사용합니다.

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


웹 기반 API 로이를 수행하는 몇 가지 방법을 찾았습니다. 우편 번호가 보내는 것이기 때문에 미국 우편 서비스 가 가장 할 생각 하지만 Ziptastic 은 편안하게 생각 합니다.

US Postal Service HTTP / XML API 사용

XML 기반 웹 API를 문서화하는 미국 우편 서비스 웹 사이트 의이 페이지, 특히이 PDF 문서 의 섹션 4.0 (22 페이지)에 따르면 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는 몇 가지 다른 기능이 있습니다. 주소 표준화 및 우편 번호 조회는 물론 전체 추적, 배송, 라벨 등을 수행 할 수 있습니다.

Ziptastic HTTP / JSON 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));
}

몇 달 전, 내 프로젝트 중 하나에 대해 동일한 요구 사항이있었습니다. 나는 그것을 조금 검색하고 다음 해결책을 찾았습니다. 이것이 유일한 해결책은 아니지만 더 간단한 해결책 중 하나를 찾았습니다 .

http://www.webservicex.net/uszip.asmx 에서 웹 서비스를 사용 하십시오 .
구체적으로 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>

도움이 되었기를 바랍니다...

참고 URL : https://stackoverflow.com/questions/4749706/lookup-city-and-state-by-zip-google-geocode-api

반응형