2012-08-13 36 views
35

Intentando completar automáticamente el trabajo para mi aplicación Google Maps.Google Maps v3 API - Autocompletar (dirección)

Aquí está el código actual:

HTML

<input type="text" class="clearText" id="address" name="address" value="" size=20 autocomplete="off"> 

Javascript

var input = document.getElementById('address'); 
    var options = { 
     componentRestrictions: {country: 'au'} 
    }; 
    var autocomplete = new google.maps.places.Autocomplete(input, options); 

Desafortunadamente no pasa nada cuando se escribe una dirección.

¿Alguna idea?

Gracias de antemano.

Editar: En realidad estoy recibiendo el siguiente error:

TypeError no detectada: No se puede leer la propiedad 'autocompletar' de la indefinida

No sé por qué, el código se coloca en mi mapa de funciones inicializar.

Edit 2: Fixed. Responda abajo.

+4

Su edición Fix funciona bien! muchas gracias. – eifersucht

+0

¿Solo cargó este script '' – jshaf

Respuesta

4

fijo. La biblioteca de autocompletar es en realidad una biblioteca separada que debe cargarse explícitamente. La siguiente línea resolvió el problema.

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places‌​&sensor=false"></scr‌​ipt> 
14

Su solución funcionó para mí también. Estoy usando el Geocomplete jQuery plug-in http://ubilabs.github.com/geocomplete/ y las instrucciones que aparecen en su página de inicio dice utilizar este

<script src="http://maps.googleapis.com/maps/api/js?sensor=false&amp;libraries=places"></script> 

Pero no funcionó para mí y estaba recibiendo el mismo error.

Consulte la documentación API de Google Maps aquí https://developers.google.com/maps/documentation/javascript/places?hl=en-EN#loading_the_library

+0

Extraño que hubiera Sé interesante saber por qué sucede esto. Tal vez el problema se deba a la forma en que se está enviando el amperstand al navegador. ¿Estabas usando PHP o html para generar el script? ¿Qué navegador? –

+0

Esto fue hace un tiempo, pero creo que estaba usando una plantilla de ERB de Rails para generar el script. Entonces, HTML. –

+0

Eso no funcionaba porque la URL debe ser 'sensor = false & libraries = places' not' sensor = false & libraries = places' que es lo que tenía. '&' es un símbolo comercial html, no uno URL (porque en una url es simplemente '&') :). – Maverick

0

Gracias Matt por la respuesta! De alguna manera, parece ser importante no omitir el atributo type="text/javascript" en la etiqueta <script> cuando se usa libraries=places.

No funciona:

<script src="http://maps.googleapis.com/maps/api/js?libaries=places&sensor=false&callback=initMap"></script> 
<script src="http://maps.googleapis.com/maps/api/js?libaries=places&sensor=false"></script> 

Obras:

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

variante de devolución de llamada también funciona (con función definida initMap):

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false&callback=initMap"></script> 

Esto parece ser consistente con otro SO answer e inconsistente con official documentation (a menos que se proporcione el key en la url hace la diferencia).

1

hay que añadir 'aplazar asíncrono' al atributo de la escritura, así:

Cuestiones relacionadas