【问题标题】:How to easily get a zipcode from a generic address with google maps api?如何使用谷歌地图 api 从通用地址轻松获取邮政编码?
【发布时间】:2011-07-31 07:46:45
【问题描述】:

我正在尝试获取通用地址的邮政编码,例如“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...}]

我返回了一个没有邮政编码的对象...但是,如果我随后获取从中返回的位置对象,那么我确实可以访问邮政编码:

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

.. 但这似乎很浪费,因为我必须对 API 进行两次调用才能执行此操作.. 有没有办法强制 Google 最初给我一个邮政编码?

【问题讨论】:

  • 洛杉矶是一个巨大的城市。我假设洛杉矶有不止一个邮政编码,而纬度/经度只是他们定义的恰好在洛杉矶的某个点。如果是这种情况,那么您描述的行为是有道理的。
  • 但是即使使用像“加利福尼亚州比佛利山庄”这样的小城市也不会返回邮政编码......难道不能告诉谷歌只给我一个估计的邮政编码而不需要两次访问 API ?
  • 比佛利山庄还有几个。我认为 Google API 几乎无法统一地为您提供邮政编码信息,因为每个城市几乎总是有多个邮政编码。您必须处理这种情况,无论一些较小的情况是否提供邮政编码。听起来您只需要打多个电话...
  • 嗯.. 这对我来说仍然很奇怪,因为“加利福尼亚州贝弗利山”会给我一个 lat & lng.. 而那个 lat & lng 对应于一个邮政编码......那为什么不呢?它只是提供与该 lat & lng 相关的所有相关数据吗?

标签: google-maps geolocation


【解决方案1】:

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

【讨论】:

  • 但是,正如我在问题中所述,我需要获取通用位置的邮政编码,例如“加利福尼亚州贝弗利山”。不是一个具体的地址......
  • 我认为这个答案不应该被否决,因为原始发帖人似乎被错误地告知了邮政编码在美国的工作方式。 5 位邮政编码的最后两位通常决定了城市的区域,而不是他想要的城市本身。前三位数字将与州和地区相对应。他从第二个查询中获得了邮政编码,因为他将坐标引入到 Google API 可以从中确定邮政编码的区域。
  • 这不是答案。有时邮政编码包含在没有"types":["postal_code"]的地址中
猜你喜欢
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 2018-08-13
  • 1970-01-01
相关资源
最近更新 更多