241 votes

Comment limiter les résultats de l'autocomplétion Google à la ville et au pays uniquement ?

J'utilise le javascript de google autocomplete places pour renvoyer les résultats suggérés pour ma boîte de recherche, ce dont j'ai besoin est de montrer seulement la ville et le pays liés aux caractères entrés mais l'api de google donnera beaucoup de résultats de lieux généraux dont je n'ai pas besoin, alors comment limiter le résultat pour montrer seulement la ville et le pays.

J'utilise l'exemple suivant :

<html>
<head>
<style type="text/css">
   body {
         font-family: sans-serif;
         font-size: 14px;
   }
</style>

<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places" type="text/javascript"></script>
<script type="text/javascript">
   function initialize() {
      var input = document.getElementById('searchTextField');
      var autocomplete = new google.maps.places.Autocomplete(input);
   }
   google.maps.event.addDomListener(window, 'load', initialize);
</script>

</head>
<body>
   <div>
      <input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on">
   </div>
</body>
</html>

443voto

Francois Points 2397

Vous pouvez essayer la restriction par pays

function initialize() {

 var options = {
  types: ['(cities)'],
  componentRestrictions: {country: "us"}
 };

 var input = document.getElementById('searchTextField');
 var autocomplete = new google.maps.places.Autocomplete(input, options);
}

Plus d'informations :

ISO 3166-1 alpha-2 peut être utilisé pour restreindre les résultats à des groupes spécifiques. Actuellement, vous pouvez utiliser componentRestrictions pour filtrer par pays.

Le pays doit être transmis sous la forme d'un code pays à deux caractères, compatible avec la norme ISO 3166-1 Alpha-2.


Codes de pays officiellement attribués

0 votes

Savez-vous s'il y a des limites d'utilisation pour les requêtes automatiques si je ne charge aucune carte ? Je sais qu'il y a une limite d'utilisation de 25 000 si je charge des cartes.

0 votes

Ces exemples sont impressionnants. Comment préparer tous les résultats au format suivant : ville, région, pays ?

0 votes

Y a-t-il un moyen de ne pas limiter le pays ?

29voto

UnLoCo Points 1617
var options = {
  types: ['geocode'] //this should work !
};
var autocomplete = new google.maps.places.Autocomplete(input,options);

référence à d'autres types : http://code.google.com/apis/maps/documentation/places/supported_types.html#table2

1 votes

Vérifiez ce code directement de google. ils ont fait un exemple de filtrage code.google.com/apis/maps/documentation/javascript/

0 votes

L'objet autocomplete n'accepte pas deux variables, une seule variable peut être acceptée, à savoir 'geocode'. Je ne sais pas comment résoudre ce problème. La documentation de Google énumère de nombreux types de variables mais aucune ne peut être acceptée.

1 votes

Les mêmes paramètres fonctionneraient-ils pour AutocompleteService ?

27voto

Kiran Muralee Points 1368

Le site réponse donnée par François aboutit à la liste de toutes les villes d'un pays. Mais si l'exigence est de lister toutes les régions (villes + états + autres régions etc.) dans un pays ou les établissements dans le pays, vous pouvez filtrer les résultats en conséquence en changeant les types.

Lister uniquement les villes du pays

 var options = {
  types: ['(cities)'],
  componentRestrictions: {country: "us"}
 };

Liste de toutes les villes, états et régions du pays

 var options = {
  types: ['(regions)'],
  componentRestrictions: {country: "us"}
 };

Dressez la liste de tous les établissements - tels que les restaurants, les magasins et les bureaux dans le pays.

  var options = {
      types: ['establishment'],
      componentRestrictions: {country: "us"}
     };

Plus d'informations et d'options disponibles sur

https://developers.google.com/maps/documentation/javascript/places-autocomplete

J'espère que cela pourra être utile à quelqu'un

15voto

Ravindra Points 114

Essayez ceci

<html>
<head>
<style type="text/css">
   body {
         font-family: sans-serif;
         font-size: 14px;
   }
</style>

<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places&region=in" type="text/javascript"></script>
<script type="text/javascript">
   function initialize() {
      var input = document.getElementById('searchTextField');
      var autocomplete = new google.maps.places.Autocomplete(input);
   }
   google.maps.event.addDomListener(window, 'load', initialize);
</script>

</head>
<body>
   <div>
      <input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on">
   </div>
</body>
</html>

http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places " type="text/javascript"

Changez cela en : "region=in" (in=india)

" http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&region=in " type="text/javascript"

0 votes

Nous avons besoin de la liste des villes, de la liste des états, de la liste des régions, etc.

1 votes

Cela devrait être la réponse acceptée. C'est le moyen le plus simple et le plus rapide d'obtenir le résultat demandé par le PO. Et ça a marché pour moi.

14voto

seBaka28 Points 246

Fondamentalement identique à la réponse acceptée, mais mise à jour avec un nouveau type et des restrictions pour plusieurs pays :

function initialize() {

 var options = {
  types: ['(regions)'],
  componentRestrictions: {country: ["us", "de"]}
 };

 var input = document.getElementById('searchTextField');
 var autocomplete = new google.maps.places.Autocomplete(input, options);
}

Utilisation de '(regions)' au lieu de '(cities)' permet de rechercher par code postal ainsi que par nom de ville.

Voir la documentation officielle, tableau 3 : https://developers.google.com/places/supported_types

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X