2011-06-10 33 views
8

我正在使用谷歌地图V3 api。我正在提交地址搜索以返回适当的地理编码结果,包括地址,机构名称和纬度/经度。谷歌地理编码 - 解析address_components,可能会有所不同

我的问题是,地理编码器的响应格式可能不同。它始终遵循相同的结构,但某些响应对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 

而,如果我是搜索一般区域,如 “汉普顿海滩,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”正如你所看到的,这些也非常不同。我可以通过逗号分割,但我想使用实际的address_components来实现完美的数据库插入。

回答

12

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

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

这会在信息存在的情况下为您提供完整的人类可读的邮政地址,或者为您提供一个完整的人类可读的邮政地址,或者是您在其中一个评论中提到的某个子地点(如海滩)的城市/州。

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

+0

一般来说,这个城市可以是'locality'或'post_town'或任何'administrative_area_level_X'甚至是'country'(新加坡,香港,梵蒂冈城等)。只要按照顺序(从X到5的“administrative_area_level_X”)查看它们,就可以在任何地方捕捉到城市。 – miguev 2016-07-14 14:56:22

1

地址是非常“人”的东西。我认为Google的数据太混乱的原因是因为他们的源数据很混乱,但是对于一个区域可能很相似。

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

+1

我正在寻找一个完整的邮寄地址。对于像沙滩这样的地方,我想只是城市/州。问题在于城市/城镇因不同的请求而被不同地提及。我需要提取他们提供的地址的每个组成部分,这太麻烦了,以至于不能满足任何类型的请求的通用性,你知道吗? – Atticus 2011-06-10 22:33:58

+0

这似乎非常棘手。没有什么办法可以解释“行政区域”是什么,它可以是一个州,一个子区或一个城市,有时它甚至不在那里。文档确实指定了您可以预期的值:http://code.google.com/apis/maps/documentation/geocoding/#Types,但我猜他们都是可选的。也许你需要看看商业系统? – Halcyon 2011-06-10 22:51:34

+0

是的人,我在想同样的..我希望有人可能知道一个jQuery库来过滤组件到通用[地址,城市,州,拉链]条款。正如你所说,administrative_area可能有所不同,所以这种通用的使用似乎相当有限。 – Atticus 2011-06-10 23:09:45