问题 如何使用google maps api从通用地址轻松获取邮政编码?


我正在尝试获取通用地址的邮政编码,例如“los angeles,ca”。我这样做的时候:

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...}]

我得到一个没有邮政编码的对象返回...但是,如果我接着从那里返回的位置对象,那么我就可以访问一个zipcode:

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

..但这似乎很浪费,因为我不得不两次打电话给API来做这件事。有没有办法强迫谷歌最初给我一个邮政编码?


11758
2017-07-31 07:46


起源

洛杉矶是一个巨大的城市。我假设洛杉矶有多个邮政编码,并且lat / long只是他们定义的一些点,恰好在洛杉矶。如果是这种情况,您描述的行为是有道理的。 - Merlyn Morgan-Graham
但即使使用像“Beverly Hills,CA”这样的小城市也不会返回邮政编码......是不是可以告诉谷歌只给我一个估计的邮政编码而不需要两次去API? - patrick
比佛利山庄还有几个。我认为Google API几乎无法统一为您提供邮政编码信息,因为每个城市几乎总是有多个邮政编码。无论一些小案例是否给出邮政编码,你都必须处理这种情况。听起来你只需要打多个电话...... - Merlyn Morgan-Graham
嗯..这对我来说似乎仍然很奇怪,因为“Beverly Hills,CA”会给我一个lat&lng ..而且lat&lng对应一个邮政编码...那么为什么它不会只提供所有相关数据与那个lat&lng有关? - patrick


答案:


为什么不使用(例如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/


11
2017-07-31 08:20



但是,正如我在我的问题中所述,我需要获得一个通用位置的邮政编码,例如“Beverly Hills,CA”。不是特定的地址...... - patrick
我认为这个答案不应该被低估,因为原始海报似乎被误解为邮政编码在美国的运作方式。 5位数邮政编码的最后两位数通常决定了城市的面积,而不是他想要的城市本身。前三位数字将与州和地区相对应。他从他的第二个查询中获取了一个邮政编码,因为他正在向Google API可以确定邮政编码的区域引入坐标。 - Bill
这不是答案。有时邮政编码包含在一个没有的地址中 "types":["postal_code"] - mitra