私はAndroidのGoogle Places APIを使用して通りや住所を自動完成しています。問題は、それが全国からのすべての通りを与えるということです。もちろん、私は、検索のための場所を制限する境界を添加していないが、それは正しく動作does notの - それは唯一の優先順位を与え、他の言葉で最良の結果がリストに高くなりますので、より多くの何も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.
-
私は手動でそれは私が思ったよりもさらに悪いです。 Web APIやGeoDataApiから結果が得られたとしても、座標が含まれていない予測のみがあり、placeIdのみが含まれています。ですから、座標で予測をフィルタリングしたい場合は、それぞれのの場所IDをリクエストする必要があります。言い換えれば、私が20の場所を持っていれば、私は座標を見つけるために20以上の要求をしなければならないでしょう。Google Places Web API
またはGeoDataApi.getAutocompletePredictions()
により、フィルタの結果を使用することができます知っている、 それは私が たいですいけないものを、あまりにも手動でUIを記述しなければならないことを意味。 - もそうそのよくない解決策、また、私は結果が良くなりますよう、
searchString
に都市名を追加することができます(ただし、すべてではない)が、それはアドレスの書き込み不明確と都市名が起きることができます。
これは唯一のオプションのようです。厳密な境界は、半径に対してのみ機能しますが、それでも何もないよりも優れています。 – DEADMC