Как ограничить результаты автозаполнения google только для Города и Страны
Я использую autocomplete google javascript, чтобы возвращать предлагаемые результаты для моего поиска, мне нужно только показать город и страну, связанную с введенными символами, но google api даст много общих мест, результаты, которые мне не нужны, поэтому как ограничить результат отображением только города и страны.
Я использую следующий пример:
<html>
<head>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 14px;
}
</style>
<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on">
</div>
</body>
</html>
Ответы
Ответ 1
Вы можете попробовать ограничение страны
function initialize() {
var options = {
types: ['(cities)'],
componentRestrictions: {country: "us"}
};
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input, options);
}
Дополнительная информация:
ISO 3166-1 alpha-2 может использоваться для ограничения результатов для определенных групп. В настоящее время вы можете использовать componentRestrictions для фильтрации по странам.
Страна должна быть передана как двухзначный код страны, совместимый с ISO 3166-1 Alpha-2.
Официально присвоенные коды стран
Ответ 2
var options = {
types: ['geocode'] //this should work !
};
var autocomplete = new google.maps.places.Autocomplete(input, options);
ссылка на другие типы: http://code.google.com/apis/maps/documentation/places/supported_types.html#table2
Ответ 3
попробуйте это
<html>
<head>
<style type="text/css">
body {
font-family: sans-serif;
font-size: 14px;
}
</style>
<title>Google Maps JavaScript API v3 Example: Places Autocomplete</title>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places®ion=in" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div>
<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on">
</div>
</body>
</html>
Ответ 4
Я немного поиграл с 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, который будет содержать несколько объектов, представляющих разные части адреса. Внутри каждого из этих объектов он будет содержать массив типов и внутри этого массива типов, вы увидите разные метки, связанные с адресом, в том числе один для страны.
Ответ 5
Ответ , данный Франсуа, приводит к перечислению всех городов из страны. Но если требование состоит в том, чтобы перечислить все регионы (города + штаты + другие регионы и т.д.) В стране или учреждениях в стране, вы можете фильтровать результаты соответствующим образом, изменяя типы.
Список только городов в стране
var options = {
types: ['(cities)'],
componentRestrictions: {country: "us"}
};
Список всех городов, штатов и регионов страны
var options = {
types: ['(regions)'],
componentRestrictions: {country: "us"}
};
Список всех учреждений, таких как рестораны, магазины и офисы в стране
var options = {
types: ['establishment'],
componentRestrictions: {country: "us"}
};
Дополнительная информация и варианты доступны
https://developers.google.com/maps/documentation/javascript/places-autocomplete
Надеюсь, что это может быть полезно кому-то
Ответ 6
Также вам нужно будет масштабировать и центрировать карту из-за ограничений вашей страны!
Просто используйте параметры масштабирования и центра!;)
function initialize() {
var myOptions = {
zoom: countries['us'].zoom,
center: countries['us'].center,
mapTypeControl: false,
panControl: false,
zoomControl: false,
streetViewControl: false
};
... all other code ...
}
Ответ 7
<html>
<head>
<title>Example Using Google Complete API</title>
</head>
<body>
<form>
<input id="geocomplete" type="text" placeholder="Type an address/location"/>
</form>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://ubilabs.github.io/geocomplete/jquery.geocomplete.js"></script>
<script>
$(function(){
$("#geocomplete").geocomplete();
});
</script>
</body>
</html>
Для получения дополнительной информации посетите эту ссылку