有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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.

  1. 我知道我可以使用Google Places Web API或通过GeoDataApi.getAutocompletePredictions()手动筛选结果, 但这意味着我也必须手动编写UI,这是我不想做的 做 这比我想象的还要糟糕。即使我从Web API或通过GeoDataApi获得结果,我也只有不包含坐标的预测,只有placeId。所以,如果我想通过坐标过滤预测,我必须对每个placeId进行请求。换句话说,如果我有20个位置,我将不得不再做20个请求来找出坐标
  2. 此外,我还可以在searchString中添加城市名称,这会使结果更好(但一点也不),但它会使地址书写不清楚,城市名称也会出现,所以这也不是一个好的解决方案

共 (1) 个答案

  1. # 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中应用严格的边界