Google地理编码 - 解析可能以不同方式返回的address_components

时间:2011-06-10 21:50:16

标签: javascript google-maps geocoding google-geocoder

我正在使用Google Maps 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

然而,如果我要搜索一般区域,例如“Hampton Beach,NH”,我会收到:

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”As你可以看到,这些也是非常不同的。我可以用逗号分割,但是我想使用实际的address_components来实现完美的数据库插入。

2 个答案:

答案 0 :(得分: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

这将在信息存在时为您提供完整的人类可读的邮政地址,或者仅为您提供一个地方性的城市/州(例如海滩),如您在其中一条评论中所述。

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

答案 1 :(得分:1)

地址非常“人性化”。我认为Google的数据如此混乱的原因是因为他们的源数据很混乱,但可能在某个区域类似。

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