2012-03-14 2 views
6

Я хотел пообщаться с моим заданием и искать погоду по названию города, а не по почтовому индексу (как я его настроил сейчас). Каким будет самый простой способ использовать строку ввода имени города и получить от нее почтовый код? Помощь очень ценится! Благодаря!Самый простой способ получить почтовый индекс от имени города

+0

Существует JQuery-плагин для этого https://github.com/Loceo/loceo-jquery-plugin – Gustav

ответ

12

Google может помочь вам здесь!

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

почтового индекса на самом деле называется "postal_code" с помощью Google.

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

EDIT

Если вы не получаете почтовый код с этим первым звонком, вам придется сделать второй c все к одному и тому же веб-сервису, используя координаты с первого вызова. Еще очень просто - вызов для Stevens Point, WI будет выглядеть следующим образом:

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

Вы можете получить значения LAT/LNG от "места". Надеюсь это поможет!

+1

Хорошо, хорошо я думал, что это было здорово, если бы он реализован и нет почтовых индексов для любого из моего прилегающего района вернулся: Green Bay wi, Stevens Point wi, wausau wi .... –

+1

Интересно. Ну, я думаю, тебе придется сделать еще один шаг. Если почтовый код не представлен в первом прогоне, возьмите значения lat и lng из «location» и запустите его через одну и ту же веб-службу. См. Мое обновление. –

-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 
Смежные вопросы