2017-10-02 11 views
0

私は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.

  1. 私は手動で Google Places Web APIまたは GeoDataApi.getAutocompletePredictions()により、フィルタの結果を使用することができます知っている、 それは私が たいですいけないものを、あまりにも手動でUIを記述しなければならないことを意味。 それは私が思ったよりもさらに悪いです。 Web APIやGeoDataApiから結果が得られたとしても、座標が含まれていない予測のみがあり、placeIdのみが含まれています。ですから、座標で予測をフィルタリングしたい場合は、それぞれの場所IDをリクエストする必要があります。言い換えれば、私が20の場所を持っていれば、私は座標を見つけるために20以上の要求をしなければならないでしょう。
  2. もそうそのよくない解決策、また、私は結果が良くなりますよう、searchStringに都市名を追加することができます(ただし、すべてではない)が、それはアドレスの書き込み不明確と都市名が起きることができます。

答えて

1

Android用Places APIは厳密な境界をまだサポートしていません。これを実現するために、Googleの問題追跡で機能要求があります:

https://issuetracker.google.com/issues/38188994

はあなたの投票を追加し、Googleからの通知をサブスクライブするには、この機能要求を主演する自由を感じます。

その間に回避策は、strict boundsをサポートするPlaces API Webサービスを使用しており、手動でUIを実装することがあります。

+0

これは唯一のオプションのようです。厳密な境界は、半径に対してのみ機能しますが、それでも何もないよりも優れています。 – DEADMC

関連する問題