2016-04-12 65 views
2

我使用谷歌自動完成時,輸入地址,這是簡單的實現:谷歌自動完成API返回的地方在我的國家第一,而不是最「預期」的地方

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

當我開始鍵入「經度」第一個建議的地方是Long Beach, CA,下一個是「倫敦英國」 - 這只是一個例子。

我位於加利福尼亞州。一般來說,當我開始輸入地址時,提供給我的地點位於CA.我如何獲得整個北美的地方?

我想修改我的設置自動完成,比如:

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

但是,在這種情況下,自動完成也沒有提供任何(即使我一直在陣列中只route

如何設置?自動完成了建議的地方不是主要來自CA,而是從北美

回答

0

試試這個:

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

首先它使用Broswser的Geolocation API獲取當前位置。然後它向Google Maps API請求獲取基於經度和緯度的國家/地區。然後,它會初始化自動填充,並將其限制在該國家/地區。

請參閱JS Fiddle demo

相關問題