2012-03-14 25 views
6

Tôi muốn gây rối với việc chỉ định của tôi và tìm kiếm thời tiết theo tên thành phố thay vì bằng mã zip (cách tôi thiết lập nó ngay bây giờ). Cách dễ nhất để sử dụng chuỗi nhập tên thành phố và nhận mã zip là gì? Giúp đỡ được nhiều đánh giá cao! Cảm ơn!Cách dễ nhất để lấy Mã Zip từ Tên Thành Phố

+0

Có một jQuery plugin cho rằng https://github.com/Loceo/loceo-jquery-plugin – Gustav

Trả lời

12

Google có thể giúp bạn ở đây!

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

Các zip là thực sự gọi là "postal_code" bởi Google.

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

Ví dụ, giả sử bạn muốn nhận được zip cho Clarkston, MI ...

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

này trả về:

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

Nếu bạn không nhận được mã bưu chính với cuộc gọi đầu tiên đó, bạn sẽ phải thực hiện một giây tất cả vào cùng một dịch vụ web bằng cách sử dụng tọa độ từ cuộc gọi đầu tiên. Vẫn còn rất đơn giản - cuộc gọi cho Stevens Point, WI sẽ như sau:

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

Bạn có thể lấy các giá trị lat/lng từ "location". Hi vọng điêu nay co ich!

+1

Được rồi, tôi cũng nghĩ rằng nó là rất lớn, đã có nó được thực hiện và không có mã zip cho bất kỳ của khu vực xung quanh của tôi trở lại: Green Bay wi, Stevens Point wi, wausau wi .... –

+1

Thú vị. Tôi đoán bạn sẽ phải thực hiện thêm một bước nữa. Nếu không có mã bưu điện nào được trình bày trong lần chạy đầu tiên, hãy lấy giá trị lat và lng từ "location" và chạy nó qua cùng một dịch vụ web. Xem cập nhật của tôi. –

-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 
Các vấn đề liên quan