2012-03-14 34 views
6

Volevo andare in giro con un mio incarico e cercare il meteo per nome della città piuttosto che per codice postale (come ho impostato ora). Quale sarebbe il modo più semplice per utilizzare una stringa di input del nome di città e ottenere un codice postale da esso? L'aiuto è molto apprezzato! Grazie!Il modo più semplice per ottenere il CAP dal nome della città

+0

C'è un jQuery plugin per quella https://github.com/Loceo/loceo-jquery-plugin – Gustav

risposta

12

Google può aiutarti qui!

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

La cerniera è in realtà chiamato "postal_code" da parte di Google.

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

Per esempio, diciamo che si desidera ottenere la zip per Clarkston, MI ...

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

Questo restituisce:

{ 
    "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" 
} 

EDIT

Se non stai ricevendo un codice postale con quella prima chiamata, dovrai fare un secondo c tutto per lo stesso servizio web utilizzando le coordinate della prima chiamata. Ancora molto semplice - l'invito a Stevens Point, WI sarebbe la seguente:

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

È possibile afferrare i valori LAT/LNG da "location". Spero che questo ti aiuti!

+1

Ok, ho pensato che era fantastico, l'aveva implementato e non ci sono codici di avviamento postale per qualsiasi della mia area circostante è tornato: Green Bay wi, Stevens Point wi, wausau wi .... –

+1

Interessante. Bene, immagino che dovrai fare un ulteriore passo, allora. Se nella prima esecuzione non viene presentato alcun codice postale, prendi i valori lat e lng da "location" ed esegui lo stesso servizio web. Vedi il mio aggiornamento. –

-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 
Problemi correlati