26

Ich habe eine App, die derzeit korrekt auf place_changed ausgelöst wird.Andere Ereignisse als "place_changed" für Google Maps Autocomplete

Ich möchte jedoch die Suche verzweigen, um sich anders zu verhalten, wenn ein Benutzer einen Autocomplete-Eintrag ausgewählt hat, und wenn sie Text ohne Hilfe von Autocomplete eingegeben haben.

Welche Art von Ereignis Listener sollte ich verwenden, um die Unterscheidung zu treffen? Ich kann keine Dokumentation zu anderen Ereignissen für Google Maps Autocomplete finden.

was ich jetzt habe:

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 
}); 

Antwort

8

Es gibt nur eine dokumentierte Ereignis in der Google Maps JavaScript API v3 für die google.maps.places.Autocomplete class, place_changed

können Sie Standard-Hörer HTML Ereignis hinzufügen, um es (nicht sicher, wenn das die Autocomplete-Funktionalität betrifft).

+1

Das Problem, das ich erlebt habe, ist, dass die Unschärfe und Ereignisse Feuer ändern, bevor das Google 'place_changed' Ereignis. Dies macht es schwierig zu wissen, was tatsächlich passiert ist. –

0

Wenn Sie Ihren eigenen Eingabe-Handler hinzufügen (z. B. CR nach Eingabe eines eigenen Textes durch den Benutzer erfassen), Autocomplete, und Ihre Funktion ruft möglicherweise Ihre Methode zurück auf. Meine Lösung ist Gas zu verwenden, um den wiederholten Aufruf zu vermeiden:

$('#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); 
     } 
    } 
} 
Verwandte Themen