我正在使用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来实现完美的数据库插入。
答案 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 name
或locality
,请求administrative_area_level_3
和administrative_area_level_1
这将在信息存在时为您提供完整的人类可读的邮政地址,或者仅为您提供一个地方性的城市/州(例如海滩),如您在其中一条评论中所述。
**我假设你只关心美国。
答案 1 :(得分:1)
地址非常“人性化”。我认为Google的数据如此混乱的原因是因为他们的源数据很混乱,但可能在某个区域类似。
地址的哪些部分与您相关?如果你只是把它喂给一个人,只要给他任何你有的东西?