2012-10-16 60 views
12

我使用谷歌地圖API來獲取城市和國家(無其他細節)的自動完成列表自動完成功能,和它的作品方位。僅獲得國家能夠從谷歌地圖API

var input = document.getElementById('newAddress'); 
    var options = { 
     types: ['(cities)'] 
    }; 

    autocomplete = new google.maps.places.Autocomplete(input, options); 

現在我想要做的完全一樣,但只獲取國家名稱。像財產以後更換types: ['(cities)']types: ['(countries)'] ...
(我試過,但沒有工作)

我應該爲了得到國家只有到我的自動完成呢?

回答

5

有沒有快速解決方案,谷歌只提供兩種類型的集合: '(市)']和[ '(地區)']

沒有[ '(國家)']提供。

文檔瀏覽:https://developers.google.com/places/documentation/autocomplete#place_types

編輯:

,你可以作爲替代使用的自動完成插件從這個網址來源:http://www.geognos.com/api/en/countries/info/all.json

+0

因此,完全沒有其他方法可以獲得唯一的國家嗎? – ParPar

+0

如果您違反Google Maps API自動完成 – sainiuc

+0

非常感謝 – ParPar

19

我一直在與谷歌自動完成API玩弄了一下,這是我能找到的限制你的結果只有國家最好的解決辦法:

var autocomplete = new google.maps.places.Autocomplete(input, options); 
var result = autocomplete.getPlace(); 
console.log(result); // take a look at this result object 
console.log(result.address_components); // a result has multiple address components 

for(var i = 0; i < result.address_components.length; i += 1) { 
    var addressObj = result.address_components[i]; 
    for(var j = 0; j < addressObj.types.length; j += 1) { 
    if (addressObj.types[j] === 'country') { 
     console.log(addressObj.types[j]); // confirm that this is 'country' 
     console.log(addressObj.long_name); // confirm that this is the country name 
    } 
    } 
} 

如果查看返回的結果對象,則會看到有一個address_components數組,其中包含表示地址不同部分的多個對象。在每個這些對象中,它將包含一個'types'數組,並且在這個'types'數組中,你會看到與一個地址相關的不同標籤,包括一個國家。

+1

努力工作,謝謝 –

+0

不客氣 - 很高興這有幫助@TareqJobayere – wmock

+1

非常感謝:) – user1012181

-2
<!DOCTYPE html> 
<html> 
<head> 
<link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500"> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script> 
</head> 
<body> 
<div id="locationField"> 
<input id="autocomplete" placeholder="Enter your address" type="text"></input> 
</div> 
<div><pre><p id="data"></p></pre></div> 
<script type="> 
var autocomplete; 
function initialize() { 
autocomplete = new google.maps.places.Autocomplete(document.getElementById('autocomplete'),{ types: ['(cities)'] }); 
google.maps.event.addListener(autocomplete, 'place_changed', function() { 
var address_components=autocomplete.getPlace().address_components; 
var city=''; 
var country=''; 
for(var j =0 ;j<address_components.length;j++) 
{ 
city =address_components[0].long_name; 
if(address_components[j].types[0]=='country') 
{ 
    country=address_components[j].long_name; 
} 
} 
document.getElementById('data').innerHTML="City Name : <b>" + city + "</b> <br/>Country Name : <b>" + country + "</b>"; 
}); 
} 
initialize(); 
</script> 
</body> 
</html>