如何使用Google地图API从通用地址轻松获取邮政编码?

14

我正在尝试获取通用地址(例如“洛杉矶,加利福尼亚州”)的邮政编码。 当我这样做时:

gcode = new google.maps.Geocoder()
gcode.geocode({'address': 'Los Angeles, CA'}, function(results, status) { log(results); });
>> [Object { address_components=[4], formatted_address="Los Angeles, CA, USA", geometry={...}, more...}]

我得到一个没有邮政编码的对象...... 但是,如果我从那个返回的位置对象中获取,然后我就可以访问邮政编码:

gcode.geocode({'latLng': results[0].geometry.location}, function(results, status) { log(results[0].address_components[7].long_name) });
>> "90012"

..但是这似乎很浪费,因为我需要调用API两次才能完成操作..有没有一种方法可以让Google最初直接给我一个邮政编码呢?


洛杉矶是一个巨大的城市。我认为洛杉矶有不止一个邮政编码,而经纬度只是他们定义的一些恰好在洛杉矶的点。如果是这种情况,你所描述的行为就有些合理了。 - Merlyn Morgan-Graham
但是即使使用像“加利福尼亚州比佛利山庄”这样的较小城市也无法返回邮政编码...难道不能告诉谷歌只给我一个估计的邮政编码而不用两次调用API吗? - patrick
还有几个对于比弗利山庄来说。我认为Google API几乎总是无法给出邮政编码信息,因为一个城市通常会有多个邮政编码。你将不得不处理这种情况,无论某些较小的情况是否提供邮政编码。听起来你只需要进行多次调用... - Merlyn Morgan-Graham
1
嗯...这对我来说仍然很奇怪,因为“Beverly Hills, CA”会给我一个纬度和经度..而那个纬度和经度对应着一个邮政编码...那么为什么它不会直接给出与该纬度和经度相关的所有重要数据呢? - patrick
1个回答

13
为什么不使用(例如1600+Amphitheatre+Parkway,+Mountain+View是你的地址)?
http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true_or_false

然后解析JSON以获取

"long_name": "94043",
  "short_name": "94043",
  "types": [ "postal_code" ]
} ]

查看这里 -> http://code.google.com/apis/maps/documentation/geocoding/


2
但是,正如我在问题中所述,我需要获取一个通用位置(例如“加利福尼亚州比弗利山庄”)的邮政编码。而不是具体地址... - patrick
1
我认为这个回答不应该被踩,因为原帖作者似乎对美国邮政编码的工作方式存在误解。一个5位数邮政编码的最后两位数字通常确定城市的区域,而不是像他想要的那样确定城市本身。前三位数字将与州和地区相对应。他从第二个查询中获得邮政编码,因为他正在向Google API引入坐标以确定邮政编码所在的区域。 - Bill
这不是答案。有时邮政编码包含在没有 "types": ["postal_code"] 的地址中。 - mitra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接