Búsqueda de ciudad y estado por código postal Google Geocode Api

Básicamente, quiero recuperar una lista de ciudad y estado dentro de un código postal. ¿Es la API de Geocode de Google capaz de hacerlo? Intenté investigar la documentación, pero encontré que la información era abrumadora.

Cualquier ayuda sería apreciada. Si hay otro método para llevar a cabo dicha tarea, házmelo saber.

Gracias

EDITAR: Pude recuperar la ciudad y el estado a través de: http://maps.google.com/maps/geo?output=xml&q=14606 pero ¿hay alguna limitación en contra de eso?

Usa la API de GeoCoding

Por ejemplo, para buscar zip 77379 utilice una solicitud como esta:

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

Encontré algunas formas de hacerlo con API basadas en web. Creo que el Servicio Postal de EE. UU. Sería el más preciso, ya que los códigos postales son lo suyo, pero Ziptastic parece mucho más fácil.

Uso de la API HTTP / XML del Servicio Postal de EE. UU.

Según esta página del sitio web del Servicio Postal de EE. UU. Que documenta su API web basada en XML , específicamente la Sección 4.0 (página 22) de este documento PDF , tienen una URL donde puede enviar una solicitud XML que contiene un código postal de 5 dígitos y lo harán responder con un documento XML que contenga la ciudad y el estado correspondientes.

De acuerdo con su documentación, esto es lo que enviaría:

 http://SERVERNAME/ShippingAPITest.dll?API=CityStateLookup&XML=90210 

Y esto es lo que recibirías de vuelta:

 < ?xml version="1.0"?>   90210 BEVERLY HILLS CA   

USPS requiere que se registre con ellos antes de poder usar la API, pero, por lo que pude ver, no hay ningún cargo por el acceso. Por cierto, su API tiene algunas otras características: puede hacer Normalización de direcciones y Búsqueda de código postal, así como todo el conjunto de seguimiento, envío, tags, etc.

Uso de Ziptastic HTTP / JSON API ( ya no es compatible )

Actualización: desde el 13 de agosto de 2017, Ziptastic ahora es una API de pago y se puede encontrar aquí

Este es un servicio bastante nuevo, pero de acuerdo con su documentación, parece que todo lo que necesita hacer es enviar una solicitud GET a http://ziptasticapi.com , así:

 GET http://ziptasticapi.com/48867 

Y devolverán un objeto JSON en la línea de:

 {"country": "US", "state": "MI", "city": "OWOSSO"} 

De hecho, funciona. Puede probar esto desde una línea de comando haciendo algo como:

 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)); } 

Hace algunos meses, tenía el mismo requisito para uno de mis proyectos. Busqué un poco y descubrí la siguiente solución. Esta no es la única solución, pero encontré una de las más simples .

Use el servicio web en http://www.webservicex.net/uszip.asmx .
Específicamente, el método GetInfoByZIP() .

Podrá consultar por cualquier código postal (por ex: 40220 ) y tendrá una respuesta como la siguiente …

 < ?xml version="1.0" encoding="UTF-8"?>  LouisvilleKY40220502E

Espero que esto ayude…