java限制Android Google Places API只搜索给定区域
我正在使用Android Google Places API自动完成街道和地址。问题是它给出了全国所有的街道。当然,我添加了限制搜索位置的边界,但它不能正常工作——它只提供优先级,所以换句话说,最佳结果在列表中会更高,仅此而已
So代码:
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())
中设置的范围。想象一下,几乎每个地方都有类似“列宁街”的东西
如何解决此问题并限制搜索结果
p.S.
我知道我可以使用Google Places Web API
或通过GeoDataApi.getAutocompletePredictions()
手动筛选结果, 但这意味着我也必须手动编写UI,这是我不想做的 做罢工> 这比我想象的还要糟糕。即使我从Web API或通过GeoDataApi获得结果,我也只有不包含坐标的预测,只有placeId。所以,如果我想通过坐标过滤预测,我必须对每个placeId进行请求。换句话说,如果我有20个位置,我将不得不再做20个请求来找出坐标李>- 此外,我还可以在
searchString
中添加城市名称,这会使结果更好(但一点也不),但它会使地址书写不清楚,城市名称也会出现,所以这也不是一个好的解决方案李>- 此外,我还可以在
# 1 楼答案
恐怕Android的PlacesAPI还不支持严格的限制。Google Issue tracker中有一个功能请求来实现此功能:
https://issuetracker.google.com/issues/38188994
请随时启动此功能请求,添加您的投票并订阅来自谷歌的通知
同时,解决方法可能是使用支持strict bounds的Places API web服务并手动实现UI
更新
该功能请求被Google标记为已修复。看看https://stackoverflow.com/a/50134855/5140781,它展示了如何在Android的PlacesAPI中应用严格的边界