2017-10-02 1 views
0

J'utilise l'API Android Google Places pour remplir automatiquement les rues et les adresses. Le problème est que cela donne toutes les rues de tout un pays. Bien sûr, j'ajouté des limites pour limiter lieu pour la recherche, mais il ne marche pas correctement - il ne donne que la priorité, donc en d'autres termes meilleurs résultats sera plus élevé dans la liste, rien de plusLimitez l'API Android Google Places pour effectuer une recherche dans une zone donnée.

Alors code:

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

En bref, le problème est: Quand je tape dans la recherche quelque chose comme "Lenina Street", je vois beaucoup de résultats inutiles hors limites définies dans .setBoundsBias(city.getBounds()). Imaginez que quelque chose comme "Lenina Street" existe dans presque chaque localité! Comment puis-je résoudre le problème et limiter les résultats de recherche?

P.S.

  1. Je sais que je peux utiliser Google Places Web API ou par GeoDataApi.getAutocompletePredictions() et les résultats filtres manuellement, mais cela signifie que je dois écrire manuellement l'interface utilisateur aussi, ce que je ne veux pas faire . C'est encore pire que je ne le pensais. Même si j'obtiens des résultats de Web API ou de GeoDataApi je n'ai que des prédictions qui ne contiennent pas de coordonnées, seulement placeId. Donc, si je veux filtrer les prédictions par coordonnées, je dois faire la demande pour chaque placeId. En d'autres termes, si j'ai 20 places, je devrai faire 20 demandes de plus pour connaître les coordonnées.
  2. Aussi je peux ajouter le nom de la ville dans searchString, qui rend les résultats meilleurs (mais pas du tout) mais cela rend l'écriture de l'adresse peu claire et le nom de la ville a lieu, donc ce n'est pas une bonne solution.

Répondre

1

Je crains Places Places API pour Android ne supporte pas encore les limites strictes. Il y a une demande de fonctionnalité dans Google Issue Tracker pour mettre en œuvre ceci:

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

Ne hésitez pas à l'étoile cette demande de fonctionnalité pour ajouter votre vote et vous abonner aux notifications de Google. Dans l'intervalle, la solution de contournement peut utiliser le service Web API Places qui prend en charge strict bounds et implémenter l'interface utilisateur manuellement.

+0

Eh bien oui, on dirait que c'est la seule option pour le moment. Les limites strictes ne fonctionnent que pour le rayon mais c'est toujours mieux que rien. – DEADMC