Подтвердить что ты не робот

Загрузите только страны для автозаполнения из API Карт Google

Я использую API Карт Google, чтобы получить список автозаполнения городов и стран (без других деталей), и он отлично работает.

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

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

Теперь я хочу сделать то же самое, но получить названия только стран. Что-то вроде замены types: ['(cities)'] на types: ['(countries)']...
(что я пытался, но не работал)

Что мне делать, чтобы в автозаполнение было включено только страны?

4b9b3361

Ответ 1

Нет быстрого решения, поскольку Google предлагает только два типа коллекций: ['(города)'] и ['(regions)']

Нет доступных ['(стран)'.

Документация здесь: https://developers.google.com/places/documentation/autocomplete#place_types

EDIT:

В качестве альтернативы можно использовать плагин автозаполнения, полученный из этого URL: http://www.geognos.com/api/en/countries/info/all.json

Ответ 2

Я немного поиграл с API Autocomplete Google, и вот лучшее решение, которое я смог найти, чтобы ограничить ваши результаты только странами:

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, который будет содержать несколько объектов, представляющих разные части адреса. Внутри каждого из этих объектов он будет содержать массив типов и внутри этого массива типов, вы увидите разные метки, связанные с адресом, в том числе один для страны.

Ответ 3

<!DOCTYPE html>
<html>
<head>
<link type="text/css" rel="stylesheet" href="#" onclick="location.href='https://fonts.googleapis.com/css?family=Roboto:300,400,500'; return false;">
<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>