26

Ho un'app che attualmente viene attivata correttamente su place_changed.Eventi diversi da "place_changed" per il completamento automatico di Google Maps

Tuttavia, desidero eseguire il branch search per comportarsi in modo diverso quando un utente ha selezionato una voce di completamento automatico e quando ha inserito il testo da solo senza l'assistenza del completamento automatico.

Che tipo di ascoltatore di eventi devo utilizzare per fare la distinzione? Non riesco a trovare alcuna documentazione su altri eventi per il completamento automatico di Google Maps.

quello che ho adesso:

var gmaps = new google.maps.places.Autocomplete($("#searchproperties").get(0), 
{ types: ['geocode'], componentRestrictions: {country: 'us'} }); 

google.maps.event.addListener(gmaps, 'place_changed', function() { 
    //FIRE SEARCH 
}); 

risposta

8

C'è solo un evento documentato nelle API v3 di Google Maps Javascript per l'google.maps.places.Autocomplete class, place_changed

È possibile aggiungere listener di eventi HTML standard per esso (non è sicuro se ciò influenzerà la funzionalità di completamento automatico).

+1

Il problema che ho incontrato è che la sfocatura e cambiare gli eventi fuoco davanti al 'evento place_changed' Google. Ciò rende difficile sapere cosa sia realmente accaduto. –

0

Se si aggiunge il proprio gestore di input (ad esempio la rilevazione di CR dopo che l'utente ha inserito il proprio testo), il completamento automatico e la funzione possono richiamare il metodo back to back. La mia soluzione è quella di utilizzare acceleratore per evitare la chiamata ripetuta:

$('#sell_address_input').keyup(function(e){ if(e.keyCode==13){throttle(addressEntered(),1000)}}); 

....

function throttle(callback, limit) { 
    var wait = false;    // Initially, we're not waiting 
    return function() {   // We return a throttled function 
     if (!wait) 
     {       // If we're not waiting 
      callback.call();  // Execute users function 
      wait = true;   // Prevent future invocations 
      setTimeout(function() 
      {      // After a period of time 
      wait = false;   // And allow future invocations 
      }, limit); 
     } 
    } 
} 
Problemi correlati