2014-05-12 7 views
5

Wie das Problem zu reproduzieren:Auslöser Google Maps zum automatischen Vervollständigung auf Fokus heraus

auf dieser Seite https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform

eine Adresse wählen, zum Beispiel 20 Water Street, New York City, NY, United States, (wie die Felder erwartet werden mit den Informationen gefüllt). Jetzt, z.B. Ändern Sie in der Adresse zwischen 20 und 10, und klicken Sie statt auf die Adresse aus der vorgeschlagenen Liste einfach irgendwo auf die Seite. Die vorgeschlagene Liste verschwindet, die neue Adresse 10 Water Street, New York City, NY, United States verbleibt im Eingabefeld, aber die Felderinformation wird nicht aktualisiert.

Ich verwende dies, um die Breite und Länge zu erhalten. Also, wenn der Benutzer, anstatt auf die Adresse zu klicken, außerhalb klickt, sieht es so aus, als ob er die Adresse geändert hat, aber tatsächlich habe ich immer noch die vorherige Adresse Lat und Lng.

hier ist die init-Funktion

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

ich smth wie das funktionieren kann dachte, aber es funktioniert nicht, diese Zeile console.log(place); undefined Ausgänge

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

Dank

+0

Sie möchten also den ersten Vorschlag automatisch auswählen, wenn das Eingabefeld den Fokus verliert? –

+0

@ Dr.Molle So weit ich es versucht habe, sieht es ja aus, aber ich bin mir nicht sicher, ob das in allen Fällen funktionieren wird. Danke – dav

+0

bekommen Antwort von 'var place = autocomplete.getPlace();' überprüfen Sie dieses http://jsfiddle.net/BBzk6/ .. – Rorschach

Antwort

0

hatte ich ein ähnliches Problem (dass irgendetwas in dem gegebenen Feld eine gültige Google Maps-Adresse sein sollte), und basierend auf dem vorgeschlagenen Link von Alexandre Boulier eine von dieser Idee inspirierte Lösung entwickelte ne, das kann dir helfen. Die Idee ist:

  • , wenn der Benutzer tut etwas anderes als auf einem Vorschlag von Google Maps
  • Auslöser das Ereignis zu bewegen Fokus auf dem ersten Vorschlag
  • Auslöser das Ereignis es
auszuwählen klicken

ich das Ergebnis für meinen eigenen Code kopieren (mit 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); 
    } 
}); 

für mich ist es funktioniert, ich hoffe, es hilft !

Verwandte Themen