2013-02-02 8 views
10

Ich richte ein benutzerdefiniertes Autocomplete-Feld ein, in dem ich Standorte von Google Places und Ereignisse aus meiner Datenbank anzeigen kann, die der Suchanfrage entsprechen. Aus diesem Grund verwende ich den Google Places-Autocomplete-Dienst, um die Abfragevorhersagen zu erhalten, anstatt die Places-Autocomplete direkt in mein Textfeld einzufügen.Google Places AutocompleteService-Filter nach Land

Das Problem ist, ich kann nicht herausfinden, wie Places Autocomplete-Vorschläge nach Land mit dem AutoComplete-Dienst gefiltert werden.

Ich habe versucht:

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

aber es zeigt immer noch die automatische Vervollständigung Optionen aus Deutschland und Frankreich :(

Irgendwelche Vorschläge

Antwort

30

Sie müssen die Einschränkungen beim Aufrufen des Dienstes und nicht beim Erstellen des Dienstes bestehen. Hier:

//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

Hallo Robert, wie und wo hast du deinen 'Callback' definiert? – chaeschuechli

+0

@chaeschuechli Sehen Sie sich das [offizielle Beispiel] (https://developers.google.com/maps/documentation/javascript/examples/places-queryprediction) an. Die Funktion 'displaySuggestions' ist der Callback. –

+1

das funktioniert nicht! Kannst du bestätigen? – Apoorv

1

Wie reference in der Dokumentation beschrieben, die Orte Bibliothek AutocompleteService? unterstützt nicht AutocompleteOptions.Wenn Sie denken, dass dies eine wertvolle Funktion wäre, geben Sie bitte eine Places API - Feature Request.

+1

Können Sie das konkretisieren sich, dass in der Dokumentation dargelegt wird? Von dem, was ich sehe, können Sie nach Ländern einschränken. – thealexbaron

+0

Ja, ich habe auch nur "componentRestrictions" überprüft – LeRoy

7

können Sie Typen angeben, und componentRestrictions AutocompletionRequest verwenden. Hier ist ein Beispiel -

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

Sie sollten diesen Code verwenden.

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

Dies ist für die Autocomplete-Klasse und nicht für die AutocompleteService-Klasse. Mit der AutocompleteService-Klasse können Sie die Ergebnisse programmatisch behandeln, während die Autocomplete-Klasse ein Eingabeelement für Sie darstellt. – GuruBob

-1

Mit diesem Arbeits-Code

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 
Verwandte Themen