2016-04-12 48 views
2
arasında

yerlerde döndürür:hakkında otomatik tamamlama API adresleri girerek, bu basit uygulama olduğunda ben Google Otomatik Tamamlama kullanıyorum benim devlet ilk yerine en "beklenen" yerler

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

ben yazarak "boylam" start, ilk önerilen yer Long Beach, CA, diğeri ise "Londra İngiltere" dir - bu sadece bir örnektir.

Kaliforniya'da bulunmaktayım. Genelde, bir adres yazmaya başladığımda, bana sunulan yerlerin CA'da olduğu söylenir. Kuzey Amerika'daki yerleri nasıl teklif edebilirim?

ben gibi, benim otomatik tamamlama kurulum değiştirmeye çalıştı.

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

Ama dizide tuttu bile bu durumda otomatik tamamlama (bir şey teklif etmedi sadece route

nasıl ayarlamak için ? CA'dan ancak Kuzey Amerika'dan değil ağırlıklı olarak yer önermek için otomatik tamamlama kadar

cevap

0

bu deneyin:

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

İlk olarak, broswser's Geolocation API'sini kullanarak geçerli konum alır. Ardından, ülkeyi enlem ve boylamı temel alarak Google Haritalar API'sı için istekte bulunur. Sonra otomatik tamamlamayı başlatır, bu ülkeye sınırlar.

Bkz. JS Fiddle demo.