2012-03-14 14 views
6

Quería perder el tiempo con una tarea mía y buscar el tiempo por nombre de la ciudad en lugar de por código postal (cómo lo configuro ahora). ¿Cuál sería la forma más fácil de usar una cadena de entrada de nombre de ciudad y obtener un código postal de ella? ¡La ayuda es muy apreciada! ¡Gracias!La forma más fácil de obtener el código postal del nombre de la ciudad

+0

Hay una jQuery-plug-in para que https://github.com/Loceo/loceo-jquery-plugin – Gustav

Respuesta

12

¡Google puede ayudarte aquí!

https://developers.google.com/maps/documentation/geocoding/

La postal se llama en realidad "postal_code" por Google.

"long_name": "94043", 
    "short_name": "94043", 
    "types": postal_code 

Por ejemplo, digamos que usted quiere conseguir la cremallera para Clarkston, MI ...

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

Esto devuelve:

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "Clarkston", 
       "short_name" : "Clarkston", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Oakland", 
       "short_name" : "Oakland", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "Michigan", 
       "short_name" : "MI", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "48346", 
       "short_name" : "48346", 
       "types" : [ "postal_code" ] 
      } 
     ], 
     "formatted_address" : "Clarkston, MI 48346, USA", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 42.7418310, 
        "lng" : -83.41402409999999 
       }, 
       "southwest" : { 
        "lat" : 42.7252370, 
        "lng" : -83.42880730000002 
       } 
      }, 
      "location" : { 
       "lat" : 42.73511960, 
       "lng" : -83.41929410 
      }, 
      "location_type" : "APPROXIMATE", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 42.74331460, 
        "lng" : -83.40328670 
       }, 
       "southwest" : { 
        "lat" : 42.72692350, 
        "lng" : -83.43530149999999 
       } 
      } 
     }, 
     "types" : [ "locality", "political" ] 
     } 
    ], 
    "status" : "OK" 
} 

EDITAR

Si no recibes un código postal con esa primera llamada, tendrás que hacer una segunda c todo al mismo servicio web utilizando las coordenadas de la primera llamada. Todavía muy simple - la convocatoria de Stevens Point, WI sería la siguiente:

http://maps.googleapis.com/maps/api/geocode/json?latlng=44.52357920000001,-89.5745630&sensor=true

Puede tomar los valores lat/lng de "localización". ¡Espero que esto ayude!

+1

bien, así que pensé que era grande, tenía que implementarse y no hay códigos postales para cualquier de mi área circundante devuelta: Green Bay wi, Stevens Point wi, wausau wi .... –

+1

Interesante. Bueno, supongo que tendrás que dar un paso más, entonces. Si no se presenta ningún código postal en la primera ejecución, tome los valores lat y lng de "ubicación" y ejecútelo a través del mismo servicio web. Ver mi actualización –

-1
var res; // store response in res variable 
var add_array = res[0].address_components; //add_array = { 
       "long_name" : "Clarkston", 
       "short_name" : "Clarkston", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Oakland", 
       "short_name" : "Oakland", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "Michigan", 
       "short_name" : "MI", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "48346", 
       "short_name" : "48346", 
       "types" : [ "postal_code" ] 
      } 
    var add_array = add_array[add_array.length-1]; //add_array = { 
        "long_name" : "48346", 
        "short_name" : "48346", 
        "types" : [ "postal_code" ] 
       } 
    var zip = add_array.long_name; //zip = 48346 
Cuestiones relacionadas