限制 Android Google 个地点 API 只搜索指定区域

Limit Android Google Places API to search only given area

我正在使用 Android Google 地点 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" 的东西!

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

P.S.

  1. 我知道我可以使用 Google Places Web APIGeoDataApi.getAutocompletePredictions() 并手动过滤结果, 但这意味着我也必须手动编写 UI,这是我不想做的 做。 那比我想象的还要糟糕。即使我从 Web API 或通过 GeoDataApi 获得结果,我也只有不包含坐标的预测,只有 placeId。因此,如果我想按坐标过滤预测,我必须请求 each placeId。换句话说,如果我有 20 个位置,我将不得不再执行 20 个请求来找出坐标。
  2. 我也可以在searchString中添加城市名称,这样可以使结果更好(但完全没有),但是会导致写地址不清晰并发生城市名称,因此也不是很好的解决方案。

恐怕 Android 的地点 API 尚不支持严格界限。 Google 问题跟踪器中有一个功能请求来实现这个:

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

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

同时,解决方法可能是使用支持 strict bounds 的 Places API Web 服务并手动实施 UI。

更新

功能请求已被 Google 标记为已修复。查看 ,其中显示了如何在 API 中为 Android.

应用严格边界