Puis-je limiter la recherche aux rues d’une ville lorsque vous utilisez la Autocomplete
– Autocomplete
Google Adresses?
Vous pouvez définir les options de Autocomplete
– Autocomplete
pour utiliser le type de geocode
, ce qui limitera les résultats renvoyés aux adresses:
var input = document.getElementById( 'searchTextField' ); var options = { bounds: yourBounds, types: ['geocode'] }; autocomplete = new google.maps.places.Autocomplete( input, options );
Il n’existe aucun moyen de limiter les résultats aux rues, mais vous obtiendrez en grande partie ce que vous voulez. Si vous définissez correctement vos yourBounds
, peut-être limitées à la zone d’une ville, vous serez aussi proche que possible.
Mise à jour répondant au commentaire:
Si vous souhaitez commencer par entrer une ville, vous pouvez lier les limites de la carte aux limites de la Autocomplete
– Autocomplete
, ce qui permettra à la carte de définir automatiquement sa fenêtre lorsqu’une ville est sélectionnée dans la Autocomplete
– Autocomplete
:
var options = { bounds: yourBounds, types: ['(cities)'] }; autocomplete = new google.maps.places.Autocomplete( input, options ); // This will bind the map's bounds to the Autocomplete's bounds: autocomplete.bindTo('bounds', map);
Ensuite, vous pouvez mettre à jour les Autocomplete
la Autocomplete
– Autocomplete
, similaires à ceux ci-dessus, pour qu’il renvoie des adresses:
autocomplete.setTypes( [ "geocode" ] );
À partir de là, vous pouvez lire les documents de l’API de la bibliothèque de lieux .
Juste un exemple de code HTML (twitter bootstrap 3 compatible :))
Je pense que le code est explicite, juste l’essayer
DEMO: JSFIDDLE
Une autre démo plus avancée
Définissez les types sur les régions .
var input = document.getElementById( 'searchTextField' ); var options = { bounds: yourBounds, types: ['(regions)'] }; autocomplete = new google.maps.places.Autocomplete( input, options );
J’espère que ça aide..
Je recherchais un moyen de restreindre la saisie street_number
automatique de lieux au niveau street_number
mais street_number
n’en ai pas trouvé.
La meilleure solution que je puisse trouver est de vérifier le composant street_number
dans le résultat des street_number
et de présenter une notification à l’utilisateur en cas d’absence.
Exemple de code:
var searchbox = document.getElementById('location'); var options = { types: ['geocode'] }; autocomplete = new google.maps.places.Autocomplete(searchbox, options); google.maps.event.addListener(autocomplete, 'place_changed', function() { var place = autocomplete.getPlace(); var foundStreet = false; for (var i = 0; i < place.address_components.length; i++) { var c = place.address_components[i]; for (var j = 0; j < c.types.length; j++) { if (c.types[j] == "street_number") { foundStreet = true; break; } } if (foundStreet) break; } if (!foundStreet) alert("Not a valid street number, add some pretty message to the user."); console.log(place); });