Comment utiliser Android Places API AutocompleteFilter

j'essaie d'implémenter l'API new Places pour android dans mon application et je ne vois pas comment configurer un filtre à la requête. Voici mon code.

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);
<!-Comme vous pouvez le voir, j'ai suivi la documentation fournie par google ici mais moi ils ne parlent pas de comment implémenter le filtre, après avoir lu le référence API Je ne vois toujours pas comment implémenter L'API.

j'ai besoin d'aide pour déterminer ce qui devrait aller dans le paramètre AutocompleteFilter.create() pour L'API. Je veux filtrer les données par villes

Merci

16
demandé sur TanmayP 2015-05-01 00:43:24

4 réponses

il fonctionne sur Google Play Service 9.4.

AutocompleteFilter filter = new AutocompleteFilter.Builder()
        .setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
        .build();
13
répondu Andy Cheng 2016-09-06 03:37:21

à Partir de la documentation:

Tableau 3: Types de prises en charge à la place de saisie semi-automatique des demandes d'

Vous pouvez restreindre les résultats d'une requête Autocomplete à un certain type en passant un paramètre types. Le paramètre spécifie un type ou une collection de types, comme indiqué dans les types supportés ci-dessous. Si rien n'est spécifié, tous les types sont retournés. En général, un seul type est autorisé. L'exception est que vous pouvez mélanger le géocodage et les types d'établissement, mais notez que cela aura le même effet que de spécifier aucun type. Les types pris en charge sont:

geocode demande au service de Place Autocomplete de ne retourner que les résultats de géocodage, plutôt que les résultats d'affaires. Généralement, vous utilisez cette requête pour désambiguer les résultats lorsque l'emplacement spécifié peut être indéterminé. address demande au service Place Autocomplete de ne renvoyer que les résultats de géocodage avec une adresse précise. Généralement, vous utilisez cette requête quand vous savez que l'utilisateur être à la recherche à une adresse spécifiée. l'établissement demande au service D'Autocomplete Place de retourner Seulement les résultats d'affaires. la collecte de type (regions) demande au service Places de retourner tout résultat correspondant aux types suivants:: localité sublocalité postal_code pays administrative_area_level_1 administrative_area_level_2 la collecte de type (cities) demande au service Places de retourner les résultats qui correspondent à locality ou administrative_area_level_3.

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

code:

    List<Integer> filterTypes = new ArrayList<Integer>();
    filterTypes.add( Place.TYPE_ESTABLISHMENT );
15
répondu Paul Ruiz 2015-05-01 23:28:28

c'est comme ça que vous devez configurer les filtres dans votre API AutoComplete Place.

    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);

seuls quelques types sont pris en charge dans Android, Vous obtiendrez

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

si vous utilisez des types non supportés comme filtres.

voir ce lien pour les types de filtres pris en charge..

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

3
répondu SureshCS50 2015-08-28 07:16:00

si vous utilisez Google Play services version 8.4.0, vous pouvez utiliser la sous-classe AutocompleteFilter.Builder pour créer le Filtre.

C'est plus facile à utiliser car vous n'avez pas à construire la liste de types manuellement.

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

soyez conscient qu'il y a actuellement des problèmes de compatibilité lors de l'installation de la version 8.4.0 de google play services. Si vous avez ce problème, vous pouvez suivre ce thread, mais je suggère de revenir à la statique obsolète AutocompleteFilter.créer() méthode si vous luttez.

3
répondu JDenais 2017-05-23 12:31:55