【发布时间】: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 相关的所有相关数据吗?