2010-10-30 26 views
19

Je souhaite présenter mes utilisateurs avec une zone de texte dans laquelle ils peuvent entrer leur adresse. Comme ils tapent leur adresse, je veux fournir aux utilisateurs des suggestions/prédictions de l'adresse qu'ils essaient de taper. Je suis également préoccupé par la pertinence de cette adresse (par exemple que l'adresse n'est pas une adresse à l'autre bout du monde).Adresse de remplissage automatique + API Google Maps

Est-ce possible? J'utilise jQuery.

+0

Ce n'est pas question probablement jquery. Vous avez besoin de taper avec des fournisseurs tiers qui vous fournissent l'adresse à l'exécution, comme les services QAS. – kobe

+0

Je ne sais pas s'il y a des fournisseurs gratuits, nous avons mis en œuvre dans notre entreprise et utilisé QAS. – kobe

+0

http://www.qas.com/home.htm, vérifiez si c'est ce que vous essayez de mettre en œuvre. – kobe

Répondre

48

Vous pouvez utiliser l'API Google Adresses pour la saisie semi-automatique de l'adresse. Lorsque l'adresse est sélectionnée, le champ address_components contient des données d'adresse structurées (par exemple, rue, ville, pays) et pourrait être facilement converti en champs séparés.

Voici une démonstration de travail courte:

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
    </head> 
    <body> 
     <input type="text" id="address" style="width: 500px;"></input> 

     <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places&language=en-AU"></script> 
     <script> 
      var autocomplete = new google.maps.places.Autocomplete($("#address")[0], {}); 

      google.maps.event.addListener(autocomplete, 'place_changed', function() { 
       var place = autocomplete.getPlace(); 
       console.log(place.address_components); 
      }); 
     </script> 
    </body> 
</html> 
+0

Y a-t-il un moyen de le faire remplir automatiquement une entrée différente? Donc, si vous commencez par entrer la première ligne et vous donne l'option de l'adresse, lorsque vous cliquez dessus, il remplit automatiquement l'adresse à travers un certain nombre d'entrées? –

+0

comment puis-je montrer l'emplacement sélectionné sur la carte s'il vous plaît aidez-moi – Erum

+0

Wow, c'était incroyablement facile et simple, merci l'homme! – Brian

6

https://github.com/ubilabs/geocomplete devrait fonctionner pour vous. Vous pourrez également afficher une carte, si nécessaire.

Si vous utilisez le plugin sans afficher de carte, vous devez afficher le logo "powered by Google" sous le champ de texte.

4

Exécution de la version @Maksym Kozlenko réponse Pour ceux qui veulent voir cela en action.

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
 
    </head> 
 
    <body> 
 
     <input type="text" id="address" style="width: 500px;"></input> 
 

 
     <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places&language=en-AU"></script> 
 
     <script> 
 
      var autocomplete = new google.maps.places.Autocomplete($("#address")[0], {}); 
 

 
      google.maps.event.addListener(autocomplete, 'place_changed', function() { 
 
       var place = autocomplete.getPlace(); 
 
       console.log(place.address_components); 
 
      }); 
 
     </script> 
 
    </body> 
 
</html>

2

Vous devez utiliser une clé API.

Voir référence here.

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
    </head> 

    <body> 
     <input type="text" id="address" style="width: 500px;"></input> 

     <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBIWSqJ5-3D-UviE0ZLO4U6AjhVcn58y4g&libraries=places&callback=initMap"></script> 
     <script> 
      function initMap(){ 
       var autocomplete = new google.maps.places.Autocomplete($("#address")[0], {}); 

       google.maps.event.addListener(autocomplete, 'place_changed', function() { 
        var place = autocomplete.getPlace(); 
        console.log(place.address_components); 
       }); 
      } 
     </script> 
    </body> 
</html>