Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地理编码——解析可能返回不同结果的地址组件_Javascript_Google Maps_Geocoding_Google Geocoder - Fatal编程技术网

Javascript 谷歌地理编码——解析可能返回不同结果的地址组件

Javascript 谷歌地理编码——解析可能返回不同结果的地址组件,javascript,google-maps,geocoding,google-geocoder,Javascript,Google Maps,Geocoding,Google Geocoder,我正在使用谷歌地图v3api。我正在提交地址搜索以返回正确的地理编码结果,包括地址、机构名称和lat/lngs 我的问题是,来自地理编码器的响应可以采用不同的格式。它始终遵循相同的结构,但有些响应使用不同的键作为address_components数据结构 例如,某些搜索会导致: establishment -> location name street_number -> address street number route

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

我的问题是,来自地理编码器的响应可以采用不同的格式。它始终遵循相同的结构,但有些响应使用不同的键作为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库可以用来处理这些不同的响应,以返回一个地址组件的数据集,该数据集可以用于人类可读的方式


我要注意的是,响应还返回一个“格式化的_地址”类型,它的返回方式类似于:“美国NH 03842汉普顿海滩”或“美国马萨诸塞州波士顿大学路1号波士顿大学02215-1407”,正如您所看到的,它们也非常不同。我可以用逗号分隔,但我想使用实际的地址组件来进行完美的数据库插入。

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


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

为什么不让你的DB镜像只使用以下键呢

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
如果存在
地区
,请在您的请求中使用该地区(因为它似乎提供了更详细的信息-)

如果不存在
街道名称
地区
,则请求
行政区(3级)
行政区(1级)

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


**我想你只关心美国

我的目标是一个完整的邮政地址。对于像海滩这样的地方,我只想要城市/州。问题是,城市/城镇因不同的请求而被不同地引用。我需要提取地址的每个组成部分,就像它们是如何提供的一样,这太混乱了,无法让它对任何类型的请求都具有足够的通用性,知道吗?这看起来非常棘手。没有真正的方法来解释什么是“行政区”,它可以是一个州、一个州或一个城市,有时甚至不存在。文档确实指定了您可以期望的值:但我猜它们都是可选的。也许你需要看看商业系统?是的伙计我也这么想。。我希望有人知道jquery库可以将组件过滤成通用的[address,city,state,zip]术语。正如你所说的,行政区域可能是不同的,所以通用的使用似乎很有限。一般来说,城市可以是“代码>地方< /COD>或<代码> PaseSub < /Cube >或任何<代码>管理层A级(新加坡)/代码>,甚至< <代码>国家>代码>(香港、梵蒂冈城等)。只要看看所有这些,按照这个顺序(
administrative\u area\u level\u X
X从5到1),你就会发现这个城市无论在哪里。@miguev是对的,这个城市可以在这些领域中的任何一个领域,甚至在我们内部,我也看到过这个城市在area\u level\u 1,这应该是州)。然而,你不能只解析下来,在很多情况下,你会把州和省作为城市,这可能比没有城市更糟糕。