2013-03-13 4 views
3

jQuery를 사용하여 google API를 사용하여 지오 코딩을 사용하고 있습니다. 다음은 내가 시도한 코드입니다.Google API, jQuery를 사용하여 지오 코딩에서 4 개의 우편 번호를 추출한 것

jQuery(document).ready(function() { 
var geocoder = new google.maps.Geocoder(); 
jQuery('AddressPicker1').autocomplete({ 
    source: function (request, response) { 
     geocoder.geocode({ address: request.term}, function (results, status) { 
     if (status === google.maps.GeocoderStatus.OK) { 
      response(jQuery.map(results, function(item) { 
      var streetNumber = ""; 
      var streetName = ""; 
      var cityName = ""; 
      var zip = ""; 
      var country = ""; 
      var countyName = ""; 
      var state = ""; 

      for (var component =0; component < item.address_components.length; component++) { 
      if (item.address_components[component] != undefined && item.address_components[component] != null) { 
        if (jQuery.inArray("street_number", item.address_components[component].types) > -1){ 
         streetNumber = item.address_components[component].long_name; 
        } 

        if (jQuery.inArray("route", item.address_components[component].types) > -1){ 
         streetName = item.address_components[component].long_name; 
        } 

        if (jQuery.inArray("locality", item.address_components[component].types) > -1){ 
         cityName = item.address_components[component].long_name; 
        } 

        if (jQuery.inArray("postal_code", item.address_components[component].types) > -1){ 
         zip = item.address_components[component].long_name; 
        } 

        if (jQuery.inArray("country", item.address_components[component].types) > -1){ 
         country = item.address_components[component].long_name; 
        } 

        if (jQuery.inArray("administrative_area_level_2", item.address_components[component].types) > -1){ 
         countyName = item.address_components[component].long_name; 
        } 

        if (jQuery.inArray("administrative_area_level_1", item.address_components[component].types) > -1){ 
         state = item.address_components[component].short_name; 
        } 
      } 
      } 
    return { 
     label : item.formatted_address, 
     value : item.formatted_address, 
     latitude : item.geometry.location.lat(), 
     longitude : item.geometry.location.lng(), 
     streetNo : streetNumber, 
     streetName : streetName, 
     city : cityName.toUpperCase() , 
     zip : zip, 
     country : country, 
     county : countyName.toUpperCase(), 
     state : state 
    } 

    })); 
    } 
}); 
}, 
select: function (event, ui) { 
     jQuery('StreetNumber').val(ui.item.streetNo); 
     jQuery('StreetName').val(ui.item.streetName); 
     jQuery('City').val(ui.item.city); 
     jQuery('Zip').val(ui.item.zip); 
     jQuery('Country').val(ui.item.country); 
     jQuery('CountyName').val(ui.item.county); 
     jQuery('StateCode').val(ui.item.state); 
     jQuery('GeocodedLatitude').val(ui.item.latitude); 
     jQuery('GeocodedLongitude').val(ui.item.longitude); 

} 

검색 중에 문제가 발생했습니다. 나는 응답에서 추가 4 자리를 얻지 못했다. 예, 검색 텍스트 "60 MAIN ST, HUNTINGTON NY 11743-6961". 응답에서 'postal_code'속성을 통해 '11743'속성을 검색했습니다. 하지만 응답에서 '6961'을 검색 할 수 없습니다.

이 시나리오에서 전체 우편 번호를 가져 오는 옵션이 있습니까?

또는 다른 검색 방법과 4 개의 우편 번호로 검색해야합니다.

미리 감사드립니다.

답변

2

내가 아는 한 Google의 지오 코더는 ZIP +4 (애드온) 코드를 추가하지 않습니다.

Google은 ZIP + 4 코드를 추가하는 형식의 표준화를 비롯하여 주소를 확인하지 않습니다.

실제로 필요한 것은 주소를 실제로 표준화하고 유효성을 검사하는 API입니다. LiveAddress과 같은 API를 사용하면 원하는 작업을 수행 할 수 있습니다. +4 애드온 코드를 포함한 모든 주소 구성 요소를 반환합니다.

저는 SmartyStreets의 개발자입니다. 다음은 귀하가 사용하는 +4 코드와 함께 귀하의 질문에 귀하가 제공 한 주소에 대한 응답의 예입니다. 실제로이 배달 지점에는 회사, YMCA이기 때문에 +4 코드가 두 개 있습니다. 여기에 하나를 http://smartystreets.com/?street=60%20Main%20St&city=Huntington&state=NY&zipcode=11743

어쨌든,이 차이되어 주소 확인 및 지오 코딩입니다 :

{ 
    "input_index": 0, 
    "candidate_index": 1, 
    "addressee": "Ymca", 
    "delivery_line_1": "60 Main St", 
    "last_line": "Huntington NY 11743-6961", 
    "delivery_point_barcode": "117436961606", 
    "components": { 
     "primary_number": "60", 
     "street_name": "Main", 
     "street_suffix": "St", 
     "city_name": "Huntington", 
     "state_abbreviation": "NY", 
     "zipcode": "11743", 
     "plus4_code": "6961", 
     "delivery_point": "60", 
     "delivery_point_check_digit": "6" 
    }, 
    "metadata": { 
     "record_type": "F", 
     "county_fips": "36103", 
     "county_name": "Suffolk", 
     "carrier_route": "C037", 
     "congressional_district": "03", 
     "rdi": "Commercial", 
     "latitude": 40.87179, 
     "longitude": -73.42655, 
     "precision": "Zip7" 
    }, 
    "analysis": { 
     "dpv_match_code": "Y", 
     "dpv_footnotes": "AABB", 
     "dpv_cmra": "N", 
     "dpv_vacant": "N", 
     "active": "Y" 
    } 
} 

여기에 전체 결과와 SmartyStreets 홈페이지에서 조회합니다. 지오 코딩은 단순히 주소를 좌표로 변환하지만 +4 코드가 필요한 경우 주소 확인 API가 필요합니다. LiveAddress는 사용할 수있는 몇 가지 기능 중 하나이지만 더 나은 아이디어를 제공하므로 검색을 시작할 수 있습니다.

+0

예 매트. 네가 옳아. LiveAddress API에 대해 살펴 보겠습니다. 감사 – Ramasamy