2012-03-14 119 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 
相关问题