10

我正在使用谷歌地图 V3 api。我正在提交地址搜索以返回正确的地理编码结果,包括地址、机构名称和纬度/经度。

我的问题是地理编码器的响应可以采用不同的格式。它始终遵循相同的结构,但某些响应对 address_components 数据结构使用不同的键。

例如,某些搜索会导致:

establishment               -> location name
street_number               -> address street number
route                       -> the street name
locality                    -> the city
administrative_area_level_1 -> the state
postal_code                 -> zip/postal code

而如果我要搜索一般区域,例如“新罕布什尔州汉普顿海滩”,我会收到:

sublocality                 -> beach name / area
administrative_area_level_3 -> city/town name
administrative_area_level_1 -> the state
postal_code                 -> zip/postal code

如您所见,这两种反应各不相同。是否有已知的 jquery 库可用于处理这些不同的响应以返回可用于人类可读方式的地址组件的数据集?

我会注意到响应还返回一个“formatted_address”类型,它返回如下:“Hampton Beach, NH 03842, USA”或“Boston University, 1 University Rd, Boston, MA 02215-1407, USA” 如您所见,这些也很不一样。我可以用逗号分隔,但我想使用实际的 address_components 进行完美的数据库插入。

4

2 回答 2

14

为什么不让您的数据库镜像只有以下键?

street_number                    -> address street number
route                            -> the street name
locality                         -> the city/town    
administrative_area_level_3      -> the city/town
administrative_area_level_1      -> the state
postal_code                      -> zip/postal code

如果locality存在,请在您的请求中使用它(因为它似乎提供了更详细的信息 - http://code.google.com/apis/maps/documentation/geocoding/#JSON

如果不存在street namelocality存在,请求administrative_area_level_3administrative_area_level_1

正如您在其中一条评论中提到的那样,当信息存在时,或者只是次区域(例如海滩)的城市/州,这将为您提供一个完整的人类可读的邮政地址。

**我假设你只关心美国。

于 2011-06-13T19:13:06.603 回答
1

地址在很大程度上是一种“人”的东西。我认为谷歌的数据如此混乱的原因是因为他们的源数据是混乱的,但在一个领域可能是相似的。

地址的哪些部分与您相关?如果你只是把这个喂给一个人,就给他你所有的东西?

于 2011-06-10T22:19:34.193 回答