2009-10-12 51 views
40

Uso de Google Maps API y JQuery Me gustaría tener un campo de Dirección que al escribirlo completará automáticamente la dirección ingresada allí. ¿Cómo se podría lograr esto?¿Cómo hacer que un campo de dirección de autocompletar con google maps api?

+0

Ver esta pregunta: http://stackoverflow.com/questions/1323661/location-search-autocomplete-that-integrates-with-bing-google-geocoding –

+0

Aquí es un ejemplo (antes de Google Maps API de autocompletar) http://gerger.co/blog/2011/02/17/google-maps-api-v3-location-search-with-jquery-autocomplete-plugin/ – azizunsal

+0

Esto es bastante bueno: http: // gmap3. net/examples/address-lookup.html –

Respuesta

59

Bueno, será mejor tarde que nunca. Google Maps API v3 ahora proporciona autocompletado de direcciones.

documentos de la API está aquí: http://code.google.com/apis/maps/documentation/javascript/reference.html#Autocomplete

Un buen ejemplo es aquí: http://code.google.com/apis/maps/documentation/javascript/examples/places-autocomplete.html

+9

tenga cuidado de usar esto como entrada para una dirección de envío. por ejemplo intente ingresar '11960 iowa avenue # 10, los angeles ca'. Esta dirección requiere un apartamento, pero su API no lo sabe y, de hecho, ni siquiera le permitirá ir a esa dirección. Otras direcciones que he probado que requieren un # apartamento no funcionan, pero hay algunas en su base de datos que no funcionan. Ideal para el mapa directo, pero no espere que se envíe una dirección validada al –

+0

Estoy de acuerdo, es bastante básico y no se adaptará a todos. Pero es muy fácil de configurar y funciona bien. – alt

+4

Tampoco puede usar esto en un sitio detrás de un inicio de sesión sin pagar un mínimo de $ 10,000/año (el precio inferior para Google Maps API v3 para empresas) –

2

Realmente lo dudo: Google Maps API es ideal para geocodificar direcciones conocidas, pero generalmente devuelve datos que son adecuados para operaciones de autocompletado. No tenga en cuenta el desafío de no golpear la API de forma tal que consuma su límite de consulta de geocodificación muy rápidamente.

3

Un poco a la deriva, pero sería relativamente fácil rellenar automáticamente la ciudad/estado de EE. UU. O CA/Provence cuando el usuario ingrese su código postal mediante una tabla de búsqueda.

Así es como podría hacerlo si se puede obligar a la gente a plegarse a su voluntad: entra

  1. usuario: postal (ZIP) Código

    os llene: estado, ciudad (provincia, para Canadá)

  2. El usuario comienza a ingresar: streetname

    Usted: relleno automático

  3. pantalla Usted: una gama de números de direcciones permitidas

    usuario: introduce el número

Hecho.

Así es como es natural para la gente lo haga:

  1. usuario entra: número dirección

    Usted: no hacen nada

  2. usuario empieza a escribir: calle nombre

    Usted: relleno automático, dibujo de una lista masiva de todas las calles del país

  3. usuario introduce: ciudad

    Usted: relleno automático

  4. usuario introduce: Estado/provence

    Usted: es wort h ¿Autocompletar algunos caracteres?

  5. Usted: autocomplete código postal (zip), si puede (porque algunos códigos se encuentran en las ciudades).


Ahora sabes por qué las personas cobran $$$ para hacer esto. :)

Para la dirección de la calle, considere que hay dos partes: numérica y calle. Si tiene el código postal, puede reducir las calles disponibles, pero la mayoría de las personas ingresan primero la parte numérica, que es backwa

3
Below I split all the details of formatted address like City, State, Country and Zip code. 
So when you start typing your street name and select any option then street name write over street field, city name write over city field and all other fields like state, country and zip code will fill automatically. 
Using Google APIs. 
------------------------------------------------ 
<script type="text/javascript" 
src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script> 
<script type="text/javascript"> 
google.maps.event.addDomListener(window, 'load', function() { 
    var places = new google.maps.places.Autocomplete(document 
      .getElementById('txtPlaces')); 
    google.maps.event.addListener(places, 'place_changed', function() { 
     var place = places.getPlace(); 
     var address = place.formatted_address; 
     var value = address.split(","); 
     count=value.length; 
     country=value[count-1]; 
     state=value[count-2]; 
     city=value[count-3]; 
     var z=state.split(" "); 
     document.getElementById("selCountry").text = country; 
     var i =z.length; 
     document.getElementById("pstate").value = z[1]; 
     if(i>2) 
     document.getElementById("pzcode").value = z[2]; 
     document.getElementById("pCity").value = city; 
     var latitude = place.geometry.location.lat(); 
     var longitude = place.geometry.location.lng(); 
     var mesg = address; 
     document.getElementById("txtPlaces").value = mesg; 
     var lati = latitude; 
     document.getElementById("plati").value = lati; 
     var longi = longitude; 
     document.getElementById("plongi").value = longi;    
    }); 
}); 

0

Hay algunas bibliotecas impresionantes como select2, pero no coincide con mi necesidad . He hecho una muestra desde cero para utilizar un texto de entrada simple.

Solo uso bootstrap y JQuery.

espero que sea útil

`https://jsfiddle.net/yacmed/yp0xmdf5/` 
1

Es fácil, pero los ejemplos de la API de Google que dan explicación detallada de cómo se puede conseguir el mapa para ver la ubicación introducida. Para la función de autocompletar solo, puedes hacer algo como esto.

Primero, habilite el servicio web de la API de Google Places. Obtenga la clave API. Tendrá que usarlo en la etiqueta del script en el archivo html.

<input type="text" id="location"> 
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=[YOUR_KEY_HERE]&libraries=places"></script> 
<script src="javascripts/scripts.js"></scripts> 

Utilice el archivo de secuencia de comandos para cargar la clase de autocompletar. Su archivo scripts.js se verá algo así.

// scripts.js custom js file 
$(document).ready(function() { 
    google.maps.event.addDomListener(window, 'load', initialize); 
}); 

function initialize() { 
    var input = document.getElementById('location'); 
    var autocomplete = new google.maps.places.Autocomplete(input); 
} 
Cuestiones relacionadas