web-dev-qa-db-ja.com

Googleプレイスでオートコンプリート検索を特定の国に制限するAndroid API

私の目標は、Google Places Android APIからのオートコンプリートの結果を特定の国(米国)のみに制限することです。

次のAPIを使用しています。

        PendingResult<AutocompletePredictionBuffer> results =
                Places.GeoDataApi
                        .getAutocompletePredictions(mGoogleApiClient, constraint.toString(),
                                mBounds, mPlaceFilter);

LatLngBoundsがこの仕事をすることになっているようです。

  1. はいの場合、米国のLatLngBoundsの値は何ですか?

  2. 国のLatLngBoundsを取得するためにどのソースを使用しましたか?

  3. LatLngBoundsは長方形なので、結果に他の国も含めることができます。そのことについて何?

  4. それを行うより良い方法はありますか?

20
K.K

Google Play Services v9.6から、国のフィルターをオートコンプリート候補に設定できるようになりました。 Playサービスのバージョンがv9.6以上であることを確認してください

AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
                            .setTypeFilter(Place.TYPE_COUNTRY)
                            .setCountry("US")
                            .build();
Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN)
                                    .setFilter(autocompleteFilter)
                                    .build(this);  

国コードを変更するには、 ISO 'Aplha 2' Codes を使用します

21
Yankee

PlaceAutocompleteFragmentを使用している場合、次のように設定できます。

AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
                        .setTypeFilter(Place.TYPE_COUNTRY)
                        .setCountry("US")
                        .build();

mAutocompleteFragment.setFilter(autocompleteFilter);
10
Malek Hijazi

LatLngBoundsコンストラクターメソッドの定義は次のようになります。

LatLngBounds (LatLng southwest, LatLng northeast)   

つまり、境界の南西の位置に1つ、境界の北東の位置に1つ、長方形の他の2つの点が簡単に計算される2つのLatLng値を取ります。

If yes, then what are the values of LatLngBounds for United States?

私が間違っていない場合、南西のLatLng値は32.6393、-117.004304であり、北東のLatLng値は44.901184、-67.32254(米国の場合)。

Which source did you use to get LatLngBounds for a country?

私は通常、 http://www.findlatitudeandlongitude.com/ を使用して、必要な場所にマーカーを置くことにより、これらのLatLng値を確認します。

LatLngBounds is a rectange - so it can include other countries in the result as well. What about that?

はい、上記の境界は純粋に長方形であり、これらの境界を使用して結果を米国のみに制限することはできません。
これは、長方形[境界]がコンストラクターに提供する2つのLatlngポイント[SE&NW]を使用して計算され、他の2つのポイントが簡単に計算されるためです。

Is there a better way to do it?

はい、代わりにGoogle Places Web Service APIを使用できます。以下のチュートリアルでは、APIの使用方法を説明します。
http://codetheory.in/google-place-api-autocomplete-service-in-Android-application/

アドレスタイプとアドレスコンポーネントを使用して、このAPIを使用した結果を希望する方法で制限できます。 https://developers.google.com/maps/documentation/geocoding/intro#Types

リンクに記載されているタイプを使用して、国、地域、およびその他のさまざまなタイプで制限できます。

それが役に立てば幸い!!

追伸:Play Services APIでのBoundsの使用を特定の国に制限する方法を誰かが答えられるとしたら、本当に素晴らしいことです!!

7
PunitD

新しいPlace API 2019では、これを行う必要があります

    FindAutocompletePredictionsRequest request = 
    FindAutocompletePredictionsRequest.builder()
   .setLocationBias(bounds)
   .setCountry("au")   //to set country only for e.g australia
   .setTypeFilter(TypeFilter.ADDRESS) 
   .setSessionToken(token)
   .setQuery(query)
   .build();
1
Devinder Singh