2012-03-14 113 views
6

我想要根據城市名稱而不是郵政編碼(我現在如何設置)來分配我的天氣和搜索天氣。使用城市名稱輸入字符串並獲取郵政編碼的最簡單方法是什麼?非常感謝幫助!謝謝!從城市名稱獲取郵政編碼的最簡單的方法

+0

有一個jQuery的插件,爲https://github.com/Loceo/loceo-jquery-plugin – Gustav 2012-11-08 17:14:31

回答

12

谷歌可以幫助你在這裏!

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

拉鍊由谷歌實際上是所謂的 「POSTAL_CODE」。

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

例如,假設您想要得到克拉克斯頓,MI拉鍊......

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

這將返回:

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

編輯

如果你沒有收到第一個電話的郵政編碼,你必須做第二個c全部使用來自第一次調用的座標的相同Web服務。還是很簡單的 - 呼籲史蒂文斯點,WI情況如下:

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

您可以從「位置」搶緯度/經度值。希望這可以幫助!

+1

好,嗯,我認爲這是偉大的,有它實現,有任何不郵政編碼我的周邊地區的回報:綠灣無線,史蒂文斯點wi,wausau wi .... – 2012-03-14 03:31:44

+1

有趣。那麼我想你必須採取一個額外的步驟,然後。如果第一次運行時不顯示郵政編碼,請從「位置」獲取lat和lng值並通過相同的Web服務運行。查看我的更新。 – 2012-03-15 02:15:36

-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 
相關問題