2015-04-30 13 views
15

Sto cercando di implementare la nuova API Places per Android nella mia app e non riesco a capire come impostare un filtro per la richiesta. Ecco il mio codice.Come utilizzare Android Places API AutocompleteFilter

LatLng southWest = new LatLng(85, -180); 
LatLng northEast = new LatLng(-85, 180); 
LatLngBounds bounds = new LatLngBounds(southWest, northEast); 
AutocompleteFilter filter = AutocompleteFilter.create(WHAT SHOULD GO HERE?); 
PendingResult result = Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient, 
      search.getText().toString(), bounds, filter); 

Come potete vedere ho seguito la documentazione fornita da Google here ma essi non parlare di come implementare il filtro, dopo aver letto l'ho dato ancora cant API Reference come implementare l'API.

Ho bisogno di aiuto per capire cosa dovrebbe andare come parametro per AutocompleteFilter.create() per l'API. Voglio filtrare i dati da città

Grazie

risposta

12

Funziona su Google Play Service 9.4.

AutocompleteFilter filter = new AutocompleteFilter.Builder() 
     .setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES) 
     .build(); 
+2

questa è la soluzione corretta ora, tutti dovrebbero usarlo – TanmayP

15

Dalla documentazione:

Tabella 3: Tipi supportate in luogo di completamento automatico richieste

Si può limitare i risultati di una richiesta Luogo Autocomplete di essere di un certo tipo passando un parametro types. Il parametro specifica un tipo o una raccolta di tipi, come elencato nei tipi supportati di seguito. Se non viene specificato nulla, vengono restituiti tutti i tipi. In generale è consentito un solo tipo. L'eccezione è che puoi tranquillamente mescolare il geocodice e i tipi di insediamento, ma tieni presente che questo avrà lo stesso effetto della specifica di nessun tipo. I tipi supportati sono:

geocode indica al servizio di completamento automatico del luogo di restituire solo i risultati di geocodifica, anziché i risultati di business. In genere, si utilizza questa richiesta per disambiguare i risultati laddove la posizione specificata potrebbe essere indeterminata. L'indirizzo indica al servizio di completamento automatico dei luoghi di restituire solo i risultati di geocodifica con un indirizzo preciso. Generalmente, usi questa richiesta quando sai che l'utente cercherà un indirizzo completo. stabilimento indica al servizio di completamento automatico del luogo di restituire solo i risultati di business. le (regioni) di tipo collezione istruisce Luoghi del servizio per restituire alcun risultato corrispondere le seguenti tipologie: Località sublocality postal_code paese administrative_area_level_1 administrative_area_level_2 i (città) Tipo di raccolta istruisce i luoghi di servizio per restituire i risultati che corrispondono località o administrative_area_level_3.

fonte: https://developers.google.com/places/supported_types

codice:

List<Integer> filterTypes = new ArrayList<Integer>(); 
    filterTypes.add(Place.TYPE_ESTABLISHMENT); 
+0

Ciao Paul, non capita di sapere come limitare il confine del confine? Grazie. – Ivan

+0

In realtà non sono sicuro se è possibile, ma se lo è non ne sono a conoscenza. –

+0

cool, grazie per la risposta – Ivan

3

Questo è come è necessario impostare dei filtri in automatico posto API.

List<Integer> filters = new ArrayList<Integer>(); 
     filters.add(Place.TYPE_ADMINISTRATIVE_AREA_LEVEL_1); 
    mAutocompleteFilter = AutocompleteFilter.create(filters); 
    mGeoLocationAdapter = new GeoLocationAdapter(this, 
      android.R.layout.simple_list_item_1, 
      latLngBounds, 
      mAutocompleteFilter); 

Solo pochi tipi sono supportati in Android, Otterrete

AutocompletePredictionBuffer{status=Status{statusCode=NETWORK_ERROR, resolution=null}} 

se si utilizzano tipi non supportati come filtri.

Vedi questo link per i tipi di filtro supportati ..

https://developers.google.com/places/supported_types#table3

3

Se si utilizza Google Play Services versione 8.4.0, è possibile utilizzare la sottoclasse AutocompleteFilter.Builder per creare il filtro.

E 'più facile da usare dal momento che non c'è bisogno di costruire l'elenco dei tipi di Luogo manualmente.

mAutocompleteFilter = AutocompleteFilter.Builder(). 
    setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES).build(); 
mGeoLocationAdapter = new GeoLocationAdapter(this, 
     android.R.layout.simple_list_item_1, 
     latLngBounds, 
     mAutocompleteFilter); 

essere consapevoli che ci sono attualmente compatibilità problemi durante l'installazione di Google Play Services versione 8.4.0. Se si incontra questo problema, è possibile seguire questo thread, ma suggerisco di tornare al metodo deprecato statico AutocompleteFilter.create() se si fatica.