2013-02-02 29 views
10

Sto configurando un campo di completamento automatico personalizzato in cui mostro le posizioni da Google Places e gli eventi dal mio database che corrispondono alla query di ricerca. Per questo motivo, sto utilizzando il servizio di completamento automatico di Google Places per ottenere le previsioni delle query invece di collegare il completamento automatico dei luoghi direttamente nel mio campo di testo.Filtro di completamento automatico di Google Places per Paese

Il problema è che non riesco a capire come filtrare i suggerimenti di completamento automatico dei Paesi per paese utilizzando il servizio di completamento automatico.

ho provato:

var service = new google.maps.places.AutocompleteService(null, { 
     types: ['cities'], 
     componentRestrictions: {country: "au"} 
    }); 

ma mostra ancora le opzioni di completamento automatico da Germania e Francia :(

Eventuali suggerimenti

risposta

30

È necessario superare le restrizioni quando si chiama il servizio, non quando lo si crea. Qui:

//create service 
service = new google.maps.places.AutocompleteService(); 

//perform request. limit results to Australia 
var request = { 
    input: 'Brisbane', 
    componentRestrictions: {country: 'au'}, 
}; 
service.getPlacePredictions(request, callback); 
+0

Ciao Robert, come e dove hai definito il tuo 'callback'? – chaeschuechli

+0

@chaeschuechli Dai un'occhiata all'esempio [ufficiale] (https://developers.google.com/maps/documentation/javascript/examples/places-queryprediction). La funzione 'displaySuggestions' è il callback. –

+1

questo non funziona! Puoi confermare? – Apoorv

1

Come indicato nella documentazione reference, i luoghi Biblioteca AutocompleteService? non supporta AutocompleteOptions. Se ritieni che questa sia una funzionalità utile, invia un numero Places API - Feature Request.

+1

Può essere più preciso su dove che si delinea nella documentazione? Da quello che vedo, puoi limitare per paese. – thealexbaron

+0

Sì, ho anche controllato "componentRestrictions" – LeRoy

7

È possibile specificare i tipi, e componentRestrictions utilizzando AutocompletionRequest. Ecco un esempio:

var service = new google.maps.places.AutocompleteService(); 

    service.getPlacePredictions({ input: query, types: ['geocode'], 
           componentRestrictions:{ country: 'us' } }, 
      function (predictions, status) { 
       if (status == google.maps.places.PlacesServiceStatus.OK) { 
        var results = document.getElementById('results'); 
        for (var i = 0, prediction; prediction = predictions[i]; i++) { 
         results.innerHTML += '<li>' + prediction.description + '</li>'; 
        } 
       } 
      }); 
0

È necessario utilizzare questo codice.

var options = { 
    types: ['(cities)'], 
    componentRestrictions: {country: ["in"]} 
} 
//Find From location  
var input= document.getElementById('input_box_city'); 
var fromAuto = new google.maps.places.Autocomplete(input, options); 
+0

Questo è per la classe di completamento automatico, non per la classe AutocompleteService. La classe AutocompleteService consente di gestire in modo programmatico i risultati, mentre la classe di completamento automatico decora automaticamente un elemento di input. – GuruBob

-1

utilizzare questo codice di lavoro

var input = document.getElementById("query_value"); 
var autocomplete = new google.maps.places.Autocomplete(input, { 
    componentRestrictions: { country: "IN" }, 
    place_id: "YOUR_PLACE_ID" 
}); 
google.maps.event.addListener(autocomplete, "place_changed", function() { 
    var place = autocomplete.getPlace(); 
}); 


https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&language=en&key=YOUR_KEY 
Problemi correlati