2012-05-16 23 views
7

Ho il seguente codice jQuery che funziona bene con ottenere l'elenco delle città per il paese selezionato.Completamento automatico JavaScript Google Places: posso rimuovere il Paese dal nome del luogo?

var city; var place; 

$('#city').on('focus',function(){ 
    input = this, options = { 
     types: ['(cities)'], 
     componentRestrictions: { 
      country: $('#country option:selected').val() 
      } 
    }; 
    city = new google.maps.places.Autocomplete(input, options); 
    google.maps.event.addListener(city, 'place_changed', function() { 
     place = city.getPlace(); 
     $(input).val(place.address_components[0].long_name); 
    }) 
}) 

In sostanza, una volta che la persona sceglie il luogo, esso sostituisce il valore nella casella di input con il valore "città", senza il paese.

sembra un po 'stupido avere City, Country nel menù a tendina quando l'utente ha già selezionato un paese, così qualcuno sa se è possibile visualizzare solo il nome della città se è stato definito un valore componentRestrictions limitare i risultati in un nazione?

trovo il mio attuale metodo di impostazione una volta che la selezione è stata fatta per essere un po '... spazzatura davvero ...

+0

Ho letto più volte la tua domanda e non mi sento di capire completamente cosa stai descrivendo. Penso che forse se includessi parte del markup, darebbe alla domanda qualche contesto e aiuterebbe tutti a capire. O forse un link alla tua pagina o un esempio su jsFiddle? –

+0

In generale, puoi modificare cosa c'è nel menu a discesa? Voglio dire, se il nome del paese è noto, sostituiscilo dall'elenco a discesa visualizzato. –

+0

Il menu a discesa è generato da Google. anche un violino del codice non funzionerebbe e un link alla mia pagina non sarebbe di nessun aiuto, visto che una volta risolto il problema non comparirebbe sulla pagina, rendendo la domanda inutile una volta che ha ricevuto risposta per qualsiasi altra persone che vogliono fare qualcosa di simile. –

risposta

3

La risposta breve è: il contenuto della risposta nella Autocomplete è controllato da Google (si parla di questo in uno dei vostri commenti) e il Autocompleteapi-doc non fornisce un modo per personalizzare il testo di risposta che viene visualizzato, oltre modificando il testo segnapostodev-guide. La soluzione che stai utilizzando è l'opzione migliore che hai (ed è un po 'reattiva, ma non so se è davvero "spazzatura").

Oltre a ciò, se non si è soddisfatti di tale approccio, è sempre possibile creare un'area di immissione personalizzata e assumere il controllo completo della richiesta-risposta avanti e indietro. Puoi utilizzare direttamente la Libreria dei luoghi dev-guide e avere il controllo completo di tutto ciò che viene mostrato.

1

Attendo 100 millesecondi, quindi sostituisco la casella di testo con il contenuto desiderato.

Tranne nel mio caso, voglio una casella vuota, ma inserire un singolo spazio.

10

Quando si richiama Google API, specificare attributo "regione":

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

Poi, quando si crea un oggetto Autocomplete, specificare il Paese nell'attributo componentRestriction, in modo che rifletta la regione specificata:

 

    new google.maps.places.Autocomplete(
     $("#my-input-field").get(0), 
     { 
      componentRestrictions: {country: "fr"}, 
      types: ["(regions)"] 
     } 
    ); 

+0

Si tratta di una nuova funzionalità dell'API di Google Maps? Ho postato questa domanda quasi due anni fa! –

+2

Sfortunatamente, questo non funziona per gli Stati Uniti. Ma altri sembrano andare bene. –

+0

Funziona con 'region = US' per me! – rebello95

2

Inoltre puoi aiutare te stesso da css - nascondendo l'ultima span (= stato) nell'elemento di completamento automatico.

.pac-item > span:last-child { 
    display: none; 
} 
+1

Dato che nasconde il paese e lo stato, questa non è una soluzione nei molti casi in cui numerosi stati hanno una città con lo stesso nome. Ad esempio, negli Stati Uniti quattro stati hanno una città chiamata Independence. – Reid

Problemi correlati