谷歌地理编码组件两个国家

12
如何使用components参数来过滤两个或更多国家的Google Geocode API结果,而不需要发出另一个请求?
示例:
- http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=country:DE,AT&address=wien没有结果,因为德国没有维也纳,逗号后面的AT被忽略。 - http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=country:AT,DE&address=wien可以,因为奥地利有维也纳。 - http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=country:AT|country:DE&address=wien没有结果,因为这两个国家的组件过滤器相互排斥。
文档中是否有我忽略的内容可以实现此功能?还是根本不能实现?
编辑:
我尝试了一种解决方案,即设置德国和奥地利的合并边界,但这只会加权结果而不是过滤它们,所以我得到了一个不想要的结果,例如:http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=bounds:55.058,17.161|46.372,5.866&address=new%20york。 在这种情况下,我想要一个ZERO_RESULTS状态。

1
你弄清楚这是否可能了吗? - Catalin Morosan
@kaciula 不好意思,不行! - yunzen
我认为这是不可能的。从有关组件过滤的文档中可以了解到:Google Geocoding API 可以返回限定在特定区域内的地址结果。该限制是使用组件过滤器指定的。过滤器由一系列用管道符(|)分隔的组件:值对列表组成。只有与所有过滤器匹配的结果才会被返回。 - Anto Jurković
@AntoJurković 我认为这样说:Google Geocode API很糟糕。 - yunzen
这是不可能的。针对该功能,这里有一个未解决的问题(https://code.google.com/p/gmaps-api-issues/issues/detail?id=4233)。 - pascal
显示剩余3条评论
1个回答

1

目前尚不可能实现。 如果您想看到这一点发生,请投票支持问题#4233

暂时我可以提供三种可能的解决方法,但都不完美:

  1. 进行多个请求并手动合并结果集。 这将提供最佳准确性,但显然最慢。
  2. 在HerrSerker的问题中使用手动合并边界技巧,然后手动过滤掉地址组件元素的short_name具有国家类型且不在您的国家列表中的结果。
  3. 完全放弃组件过滤器,并在搜索字符串中包含“奥地利或德国”。同样,您需要手动过滤结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接