【发布时间】:2018-03-13 08:14:27
【问题描述】:
我正在使用 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”的东西!
如何解决问题并限制搜索结果?
附言
-
我知道我可以使用Google Places Web API或GeoDataApi.getAutocompletePredictions()并手动过滤结果, 但这意味着我也必须手动编写 UI,我不想这样做 做。 罢工> 那比我想象的还要糟糕。即使我从 Web API 或通过 GeoDataApi 获得结果,我也只有不包含坐标的预测,只有 placeId。因此,如果我想通过坐标过滤预测,我必须请求 每个 placeId。换句话说,如果我有 20 个地点,我将不得不再执行 20 次请求才能找到坐标。 - 我还可以在
searchString中添加城市名称,这会使结果更好(但一点也不),但它会使地址的书写不清楚并且会发生城市名称,所以它也不是很好的解决方案。
【问题讨论】:
标签: java android google-maps google-places-api