2012-03-14 25 views
6

Benim bir ödevi ile havaya uçurmak ve posta kodu yerine şehir adıyla hava durumu aramak istedim (şimdi nasıl kurdum). Bir şehir adı giriş dizesi kullanmanın ve bunun üzerinden bir posta kodu almanın en kolay yolu ne olurdu? Yardım çok takdir edilir! Teşekkürler!Şehir Kodu'ndan Posta Kodu almanın en kolay yolu

+0

o https://github.com/Loceo/loceo-jquery-plugin – Gustav

cevap

12

Google, burada size yardımcı olabilir!

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

fermuar

gerçekte Google tarafından "Postal_Code" denir. Örneğin

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

, en Clarkston, MI için zip almak istiyorum diyelim ...

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

Bu döndürür:

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

DÜZENLEME

ise Bu ilk aramayla bir posta kodu almıyorsunuz, ikinci bir c Hepsi ilk çağrının koordinatlarını kullanarak aynı web servisine. Yine çok basit - aşağıda Stevens Point çağrısı, WI olacaktır: Sen "konumunun" dan enlem/Ing değerlerini yakalamak olabilir

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

. Bu yardımcı olur umarım! için bir jQuery eklentisi var

+1

Tamam, ben, büyük düşünce uygulandığı vardı ve hiçbiri için posta kodları vardır Çevremde döndü: Green Bay wi, Stevens Point wi, wausau wi .... –

+1

İlginç. Öyleyse sanırım bir adım daha atacaksın. İlk seferde posta kodu yoksa, lat ve lng değerlerini "konum" dan alın ve aynı web servisinden çalıştırın. Güncellemeye bakı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 
İlgili konular