2016-04-12 7 views
2

ich Google Automatische Vervollständigung verwenden bei der Eingabe von Adressen, das ist die einfache Implementierung ist:Google Autocomplete API gibt Orte in meinem Zustand zuerst anstelle der „erwarteten“ Orte

autocomplete_origin_address = new google.maps.places.Autocomplete(
    document.getElementById('origin_address'), {types: ["geocode"]} 
); 

Wenn ich die Eingabe von „Lon“ beginnen, Der erste vorgeschlagene Ort ist Long Beach, CA, und der nächste ist "London United Kingdom" - das ist nur ein Beispiel.

Ich bin in Kalifornien. Allgemein gesagt, wenn ich eine Adresse eintippe, befinden sich die Orte, die mir angeboten werden, in CA. Wie bekomme ich die Plätze in ganz Nordamerika angeboten?

Ich versuchte, meinen Autocomplete-Setup zu ändern, wie:.

autocomplete_origin_address = new google.maps.places.Autocomplete(
    document.getElementById('origin_address'), {types: ["route", "geocode"]} 
); 

Aber in diesem Fall die zum automatischen Vervollständigung nichts bieten (auch wenn ich im Array route nur gehalten

So richtet ? up der automatischen Vervollständigung die Orte vorschlagen nicht in erster Linie von CA, sondern aus dem Nordamerika

Antwort

0

Versuchen Sie folgendes:

navigator.geolocation.getCurrentPosition(position=> { 
    $.getJSON("https://maps.googleapis.com/maps/api/geocode/json?latlng=" 
      + position.coords.latitude + "," + position.coords.longitude 
      + "&sensor=false").then(data=> { 
    for (let component of data.results[0].address_components) { 
     if (component.types.includes("country")) { 
     new google.maps.places.Autocomplete(
      $('#origin_address')[0], {types: ["geocode"], 
      componentRestrictions: {country: component.short_name}} 
     ); 
     break; 
     } 
    } 
    }) 
}) 

Zuerst wird der aktuelle Standort mit der Geolocation API von Broswser ermittelt. Dann wird eine Anfrage an Google Maps API gestellt, um das Land basierend auf Längen- und Breitengrad zu erhalten. Dann initialisiert es die automatische Vervollständigung und beschränkt es auf dieses Land.

Siehe JS Fiddle demo.

Verwandte Themen