我正在使用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"存在于几乎每个的地方!
如何解决问题并限制搜索结果?
P.S。
Google Places Web API
或GeoDataApi.getAutocompletePredictions()
并手动过滤结果,
但这意味着我必须手动编写UI,我不想这样做
做。 击>
这比我想象的还要糟糕。即使我从Web API或通过GeoDataApi获得结果,我只有预测不包含坐标,只有placeId。因此,如果我想按坐标过滤预测,我必须请求每个 placeId。换句话说,如果我有20个位置,我将不得不再做20个寻找坐标的请求。searchString
中添加城市名称,这会使结果更好(但根本不会),但这会使地址写入不明确,城市名称也会发生,所以它也不是很好的解决方案。答案 0 :(得分:1)
我担心Android版Places API不支持严格限制。 Google问题跟踪器中有一项功能请求可以实现此目的:
https://issuetracker.google.com/issues/38188994
随意添加此功能请求,以添加您的投票并订阅来自Google的通知。
与此同时,解决方法可能是使用支持strict bounds的Places API网络服务并手动实施用户界面。
<强>更新强>
功能请求已被Google标记为已修复。请查看https://stackoverflow.com/a/50134855/5140781,了解如何在Places API for Android中应用严格边界。