是否可以从地理编码器API获取一致的address_components数据?

时间:2016-07-05 13:16:08

标签: google-maps-api-3 google-geocoding-api

我用这个: geocoder.geocode(geoRequest,function(results,status){ ... ... }

问题是从地理编码器返回的数据似乎不一致。值得一提的是,当我在调用地理编码器之前加载地图API的js文件时,我指定了语言,(并且我还在geocoder.geocode中的变量geoRequest中指定了国家/地区(例如:AU for australia))呼叫)。

为了让其他人更容易看到我尝试理解的内容,我们可以使用以下网址: http://maps.googleapis.com/maps/api/geocode/json?components=country:AU&language=en&address=darwin

结果中有趣的部分是这个请求返回这些address_components long_name:

澳大利亚

北领地(short_name = NT)

达尔文

如果我包括" briggs street"在搜索中,所以我得到这个网址: http://maps.googleapis.com/maps/api/geocode/json?components=country:AU&language=en&address=briggs+street,darwin

然后我得到这些address_components long_name:

澳大利亚

北领地(short_name = NT)

达尔文市

达尔文市

布里格斯街

我的问题:

为什么"达尔文"在我搜索" briggs street,darwin"?的第二个例子中没有返回在这种情况下,文字是:

达尔文市

达尔文市

是否可以通知地理编码器API我希望返回一致的分层结果,无论是否指定例如:一条路?

我问的原因是我想根据用户指定的位置,通过输入城市名称或街道来收集统计信息。我希望能够使用返回的component_addresses在数据库中构建来自客户端(用户)的其他信息。

但是,如果例如,统计报告将不会非常一致一个人希望看到达尔文的一些统计数据(用户只注册进入"达尔文"),因为用户输入的数据输入" briggs street,darwin"将不会将数据存储在位置" Darwin" (至于第一个用户) - 因为"达尔文"不同于达尔文市"达尔文市"和#34;达尔文市政府"。

在搜索" fulton street,brooklyn"时,可以观察到类似的不一致。和"布鲁克林"

搜索布鲁克林: ?成分=国家:US&安培;地址=布鲁克林

返回:

USA

纽约(short_name = NY)

国王郡

纽约

布鲁克林

但是......这次搜索" fulton + street,brooklyn": ?成分=国家:US&安培;地址=富尔顿+街道,布鲁克林

返回:

USA

纽约(short_name = NY)

国王郡

布鲁克林

富尔顿街

为什么没有"纽约"介于" Kings County"和布鲁克林"布鲁克林"在上面的最后一个结果?再次......似乎有些不一致。

2 个答案:

答案 0 :(得分:2)

以下是丹麦的另一个例子:

搜索欧登塞: http://maps.googleapis.com/maps/api/geocode/json?components=country:DK&language=en&address=odense

给了我这个结果:

丹麦

地区Syddanmark(administrative_area_level_1)

[...]

如果我在欧登塞寻找街道ryttergade,就像这样: http://maps.googleapis.com/maps/api/geocode/json?components=country:DK&language=en&address=ryttergade,odense

然后区域“Region Syddanmark”(administrative_area_level_1)不在结果集中。为什么会这样?

是否有办法通知地理编码器我确实希望在结果集中返回administrative_area_level_1,例如包含街道名称?

答案 1 :(得分:1)

您可以通过反向地理编码latlng来获取它们,但并不总是通过对街道级地址进行地理编码。

<强>达尔文

address=Darwin返回一个口语城市,与您获得的“达尔文城市”不同address=briggs+street,darwin。口语城市标有playertransform = GameObject.FindWithTag("Player").transform; 而非"types": ["colloquial_area", "locality", "political"]

“达尔文市”的(非口语)由“达尔文市”包含,而口语城市“达尔文”则不包含。后者只包含在下一个(更大)政治部门“北领地”中,其中也包含“达尔文市”。这解释了您看到的组件。

<强>布鲁克林

布鲁克林和纽约市的其他几个地方有点特别。在那里,城市的名称(纽约)与邮政地址无关。这就是为什么街道级地址不应该具有本地性的原因,"types" : ["locality", "political"]

也是如此

<强>欧登塞

与布鲁克林相同,但在整个国家/地区似乎都是如此:address_components组件未显示,因为它与街道级地址无关。