2015-12-01 5 views
8

Ich möchte Suchergebnisse für ein bestimmtes Land erhalten. Ich habe versucht, Breiten- und Längengrad zu setzen, aber es kann auch die Ergebnisse anderer Länder in der Nähe des gewünschten Landes enthalten!Wie erhalten Sie länderspezifische Ergebnisse in der Google Places-API für AutocompletePredictions in Android?

Ich habe andere Fragen gesehen, die vorschlagen, &components=country:COUNTRY_NAME in der Anfrage-URL zu übergeben (Ich habe es gesehen here). Aber ich möchte die Anfrage von der Google Places-API weitergeben.

Ich bin mit folgenden Methode:

Places.GeoDataApi.getAutocompletePredictions (mGoogleApiClient, constraint.toString(), mBounds, mPlaceFilter);

Aber ich konnte keine Möglichkeit finden, einen Ländernamen für das Ergebnis für das spezifische Land zu übergeben. (Ich habe versucht, den Namen des Landes in der Anfrage-URL zu übergeben und es funktioniert.) Aber wie erreicht man dasselbe mit der Methode Places.GeoDataApi.getAutocompletePredictions()?

Oder gibt es eine andere Möglichkeit, dies zu erreichen, ohne den Ländernamen in der Anfrage-URL zu senden?

Antwort

13
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder(). 
        setTypeFilter(Place.TYPE_COUNTRY).setCountry("IN").build(); 

Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN) 
          .setFilter(typeFilter) 
          .build(this); 
+4

setCountry funktioniert. Einzige Voraussetzung: com.google.android.gms: play-services-places: 9.6.1. Überprüfen Sie https://developers.google.com/android/guides/releases –

0

Es gibt 2 Möglichkeiten, dies zu tun.

  1. Verwenden Sie latLng Grenzen für Ihr Land, um die Ergebnisse einzuschränken. (Dies wären jedoch rechteckige Grenzen. Daher wäre die Einschränkung ungefähr).

2 Sie sollten die Web Service API verwenden. Es funktioniert auch mit Android.

http://codetheory.in/google-place-api-autocomplete-service-in-android-application/

Sie Adresstypen und Adresskomponenten verwenden könnten die Ergebnisse mit dieser API in der Weise, die Sie wünschen, zu beschränken:

https://developers.google.com/maps/documentation/geocoding/intro#Types

+2

Hallo @ shreyas, ich habe beide ausprobiert. Aber ich möchte es von Google API weitergeben. Ich möchte es, weil ich Benutzer schnelle Antwort in AutoCompleteTextView zeigen möchte, während in JSON zuerst ich die Daten von JSON finden und dann als Liste anzeigen muss. Eine bessere Option für mich ist die Verwendung der Google API. Gibt es eine Möglichkeit, dies ohne Web Services zu tun? –

2

Mit Javascript Sie Component-Beschränkungen wie unten Code verwenden, versuchen, für Android neu zu schreiben:

var options = { 
    // bounds : boundsByCity, 
    types: ["geocode"], 
    componentRestrictions: { country: "IN" } 
}; 

//Create the search box and link it to the UI element 
var input = document.getElementById('pac-input'); 
var temp = new google.maps.places.Autocomplete(input, options); 
+4

Ihre Antwort enthält keine Informationen zur Implementierung in Android. Bitte schreiben Sie den Code zu Android, da diese Frage es erwähnt. –

+0

@The wer diese Antwort upvoted: Wie haben Sie es in Java implementiert? – lukle

4

Die (regions) Art Sammlung weist den Places-Dienst jedes Ergebnis stimmen mit den folgenden Typen zurück:

  • Ort
  • Nachbar
  • postal_code
  • Land
  • administrative_area_level_1
  • administrative_area_level_2
Official Guide von Google Place Types:

Die (Regionen) Typ Sammlung wird in Google Places API for Android.

Referenz von nicht unterstützt.

Wenn Sie dies implementieren möchten,

  • Verwenden LatLng Grenzen mit von Längen- und Breitengrad angegeben bestimmten Bereich des Landes, die Ergebnisse zu beschränken.

  • Sie können auch die Google Places Web Service verwenden.

Probe: Für Ihr Land über Web Service zu beschränken, Ergebnisse von Land Indien zeigt.

URL: https://maps.googleapis.com/maps/api/place/autocomplete/json?key=AIzaSyCkvow9LlFNOywy8lzaekn-xROBZRsSFvU&input=a&types=(cities)&components=country:ind

Hinweis:Wenn Sie das country Filter auf Google Places API anwenden möchten, leider müssen Sie WebService ab sofort verwenden wird kein Filter/Methode in Android API zu beschränken nach Ländern (außer LatLng Bounds).

+1

Wie kann ein Stadtfilter angewendet werden? –

Verwandte Themen