小编典典

限制Android Google Places API仅搜索给定区域

java

我正在使用Android Google Places
API自动完成街道和地址。问题是它覆盖了整个国家的所有街道。当然,我添加了边界来限制搜索的位置,但是它无法正常工作-
它仅给出优先级,因此换句话说,最佳结果在列表中会更高,仅此而已

所以代码:

       AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
                .setTypeFilter(AutocompleteFilter.TYPE_FILTER_ADDRESS)
                .setCountry("RU")
                .build();

        Intent intent =
                new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_OVERLAY)
                        .zzih(searchString) //that is for passing search string from toolbar
                        .setFilter(typeFilter)
                        .setBoundsBias(city.getBounds())
                        .build(this);

简而言之,问题是:当我输入“ Lenina
Street”之类的搜索内容时,我看到了很多无用的结果.setBoundsBias(city.getBounds())。试想一下,几乎 每个
地方 存在类似“ Lenina Street”的东西!

如何解决该问题并限制搜索结果?

聚苯乙烯

  1. 我知道我可以 手动使用Google Places Web API或按GeoDataApi.getAutocompletePredictions()和过滤结果,但这意味着我也必须手动编写UI,这是我不想做的。 那比我想象的还要糟糕。即使我从Web API或通过GeoDataApi获得结果,我也只有不包含坐标的预测,只有placeId。因此,如果我想按坐标过滤预测,则必须请求 每个 placeId。换句话说,如果我有20个位置,则必须再执行20个请求才能找到坐标。
  2. 另外,我可以在中添加城市名称searchString,这样可以使结果更好(但一点也不好),但是这样会使地址的写入变得不清楚,并且发生了城市名称,因此它也不是很好的解决方案。

阅读 279

收藏
2020-11-30

共1个答案

小编典典

恐怕Android版Places API尚不支持严格限制。Google问题跟踪器中有一项功能要求,可以实现此功能:

https://issuetracker.google.com/issues/38188994

随时为该功能请求加注星标,以添加您的投票并订阅来自Google的通知。

同时,解决方法可能是使用支持严格限制并手动实现UI的Places API Web服务。

2020-11-30