2013-05-24 3 views
3

도시 또는 주 이름을 Geocoder API 또는 다른 방법을 사용하여 javascript 또는 angularjs로 우편 번호로 변환하려면 어떻게해야합니까? 사용자 입력에서 변환하려고합니다.도시 또는 주 이름을 우편 번호로 변환하는 방법

+0

Google지도를 표시 하시겠습니까? (그렇지 않은 경우 몇 가지 제안 사항이 있습니다.) – Matt

답변

0

여기에 공장 예입니다 address가 입력

feederliteModule.factory('maps', ['$q', function ($q) { 
var geocoder = new google.maps.Geocoder(); 
return { 
    geocode: function (address) { 
     var deferred = $q.defer(); 

     geocoder.geocode({ 
      'address': address 
     }, function (results, status) { 
      deferred.resolve(results); 
     // Should also reject if AJAX errors. 
     }); 

     return deferred.promise; 
    } 
    }; 
}]); 

입니다.

... 
{ 
    "long_name": "168751", 
    "short_name": "168751", 
    "types": [ 
     "postal_code" 
    ] 
    } 
    ... 

지금 당신이 같은 컨트롤러에서 호출 할 수 있습니다 : 당신이 우편 번호를 찾을 수있는 위치

출력은 JSON보기를해야 물론

maps.geocode(address) 
+0

모듈화 및 재사용 가능성을 제외하고 Maxim은이 코드를 공장에 보관해야하는 특별한 이점 또는 이유가 있습니까? –

0

Google에는이를위한 매끄러운 API가 있습니다. GoogleAPI를 사용하여 도시 이름에서 우편 번호를 얻기에 스택 오버플로 스레드를 체크 아웃 : Easiest way to get Zip Code from City Name

+0

Google지도를 사용하는 한 괜찮습니다. 그렇지 않으면 서비스 약관에 위배됩니다. – Matt

0

을, 우편 번호 반드시 관련이 없습니다 장소가 아니라 배달 경로. USPS는 우편 배달을 효율적으로 관리하기 위해 필요에 따라 우편 번호를 제어하고 우편 번호를 재정렬합니다. 많은 사람들이 ZIP 코드가 도시의 특정 도시 나 지역을 정확하게 나타 내기를 기대하지만 정적은 아닙니다. 미국 내 42,000 개의 5 자리 우편 번호 중 약 4 %가 매월 변경되므로 귀하가 거주하는 도시/주/우편 데이터가있는 곳이면 매월 USPS가 업데이트해야합니다.

googlemaps 외에도 원하는 서비스를 제공하는 많은 상업 서비스가 있습니다. "zip code api"에 대한 빠른 Google 검색이 트릭을 수행합니다.

0

감사합니다. 나는 여기에 코드입니다 :) ..... 그것을 해결 :

기능 getCity (옵션) {

var geocoder = new google.maps.Geocoder(), 
    request; 

if(options.latitude) { 

    request= { 'latLng': new google.maps.LatLng(options.latitude, options.longitude) }; 

} else { 

    request= { 'address': options.address }; 

}; 

geocoder.geocode(request, function(results, status) { 

    if (status == google.maps.GeocoderStatus.OK) { 

     console.log(results); 

     geocoder.geocode(request, function(results, status) { 

     if (status == google.maps.GeocoderStatus.OK) { 

      console.log(results); 


      var latitude = results[0].geometry.location.jb; 
      var longitude = results[0].geometry.location.kb; 
       var latlng = new google.maps.LatLng(latitude, longitude) 

       alert(latlng); 

       geocoder.geocode({'latLng': latlng}, function(results, status) { 

        //no result, check addresses 
        for(var resultIndex = 0; resultIndex < results.length; resultIndex++) { 

         var addresses = results[resultIndex].address_components; 

         for(var addressIndex = 0; addressIndex < addresses.length; addressIndex++) { 

          var types = addresses[addressIndex].types; 

          for(var typeIndex = 0; typeIndex < types.length; typeIndex++) { 

           if(types[typeIndex] == 'postal_code') { 
            alert(addresses[addressIndex].long_name) ; 
            return; 

           }; 

          }; 

         }; 

        }; 


       }); 


    } else { 

     console.log('error: ' + status); 
     // complete(); 

    }; 

}); 

이};

관련 문제