2014-05-12 7 views
5

come riprodurre il problema:mappe trigger completamento automatico di Google sul fuoco fuori

in questa pagina https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform

scegliere qualche indirizzo, ad esempio 20 Water Street, New York City, NY, United States, (come previsto i campi vengono riempito con le informazioni). Ora, ad es. nel cambio indirizzo da 20 a 10 e invece di scegliere l'indirizzo dall'elenco suggerito, basta cliccare da qualche parte sulla pagina. L'elenco suggerito scompare, il nuovo indirizzo 10 Water Street, New York City, NY, United States rimane nel campo di input, ma le informazioni sui campi non vengono aggiornate.

Lo sto utilizzando per ottenere la latitudine e la longitudine. Quindi, se l'utente invece di fare clic sull'indirizzo, fa clic all'esterno, sembrerà che abbia cambiato l'indirizzo, ma in realtà avrò ancora il Lat e il Lng dell'indirizzo precedente.

qui è la funzione init

var autocomplete; 
function initialize() { 
    autocomplete = new google.maps.places.Autocomplete(
    /** @type {HTMLInputElement} */ 
    (document.getElementById('addressAutocomplete')), { 
     types : [ 'geocode' ] 
    }); 

    google.maps.event.addListener(autocomplete, 'place_changed', function() { 
     var place = autocomplete.getPlace(); 
     console.log(place); 
    }); 
} 

pensavo smth come questo può funzionare, ma non lo fa, questa linea console.log(place); uscite undefined

$(document).ready(function() { 
    $(document).on('focusout', '#addressAutocomplete', function() { 
     google.maps.event.trigger(autocomplete, 'place_changed', {}); 
    }); 
}); 

Grazie

+0

Quindi si desidera selezionare automaticamente il primo suggerimento quando il campo di immissione perde lo stato attivo? –

+0

@ Dr.Molle Per quanto ho provato, sembra sì, ma non sono sicuro che funzionerà in tutti i casi. Grazie – dav

+0

ricevendo risposta da 'var place = autocomplete.getPlace();' controlla questo http://jsfiddle.net/BBzk6/ .. – Rorschach

risposta

0

ho avuto un problema simile (che qualsiasi cosa nel campo dato dovrebbe essere un indirizzo valido di Google Maps), e basato sul link suggerito da Alexandre Boulier, ha costruito una soluzione ispirata a questo o ne, questo potrebbe aiutarti. L'idea è:

  • quando l'utente fa qualcosa di altro che cliccare su un Google Maps suggerimento
  • attivare l'evento per spostare focus sul primo suggerimento
  • attivare l'evento per selezionarlo

copio il risultato per il mio proprio codice (con Jquery):

//// Ensuring that only Google Maps adresses are inputted 
function selectFirstAddress (input) { 
    google.maps.event.trigger(input, 'keydown', {keyCode:40}); 
    google.maps.event.trigger(input, 'keydown', {keyCode:13}); 
} 

// Select first address on focusout 
$('#content').on('focusout', 'input#xxx__zzz', function() { 
    selectFirstAddress(this); 
}); 

// Select first address on enter in input 
$('#content').on('keydown', 'input#xxx__zzz', function(e) { 
    if (e.keyCode == 13) { 
     selectFirstAddress(this); 
    } 
}); 

per me funziona, spero che aiuta !