Вопрос по jquery, google-maps – ограничьте Google карты стран в списке автозаполнения "ИНДИЯ, США и ВЕЛИКОБРИТАНИЯ"

2

Этот код не работает. Пожалуйста, скажите мне точное решение

<script src="maps.googleapis.com/maps/api/…; type="text/javascript"></script>
<script type="text/javascript">
   function initialize() {
      var input = document.getElementById('searchTextField');
      /* restrict to multiple cities? */
      var options = {
          types: ['(cities)'],
          componentRestrictions: {country: ["usa", "uk"]}
      };
      var autocomplete = new google.maps.places.Autocomplete(input, options); 
   }
   google.maps.event.addDomListener(window, 'load', initialize);
</script>

UPDATE

Автозаполнение фильтра по нескольким странам было введено в версии 3.27 API Карт JavaScript в январе 2017 года:

You can now restrict Autocomplete predictions to only surface from multiple countries. You can do this by specifying up to 5 countries in the componentRestrictions field of the AutocompleteOptions.

https://developers.google.com/maps/documentation/javascript/releases#327

Это должно быть точное решение! elclanrs
я хочу показать, 1. если пользователь введет «США» в текстовом поле (текстовое поле должно быть заполнено автоматически), затем на карте Google отобразится & quot; сша & quot; карта 2. если пользователь вводит & quot; uk & quot; затем карта Google покажет & quot; uk & quot; карта В текстовом поле автозаполнения страна должна быть США и Великобритании Manoj Thakur
это не работает Manoj Thakur
Вы забыли двойную кавычку в теге скрипта Zakaria
@elclanrs Lmao: P, OP - человек, каковы отношения между автозаполнением и Google-картой, проработайте ваш вопрос, пока не получите! Tats_innit

Ваш Ответ

6   ответов
4

которую я использовал, манипулируя позициями нескольких автозаполненных div:

    var location = $('#location');
var options1 =  { 
                    types: ['(cities)'],
                    componentRestrictions: {country: 'uk'}
                }
var options2 =  { 
                    types: ['(cities)'],
                    componentRestrictions: {country: 'irl'}
                }
if (location.exists()) { 
    $(location).each(function(index){
        new google.maps.places.Autocomplete(this, options2);
        new google.maps.places.Autocomplete(this, options1);
    });
 var pressed = 0;
            google.maps.event.addDomListener(this, 'keydown', function(e){
            if (e.keyCode == 40 || e.keyCode == 38) { 
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();
            }
        },true); 
    location.keypress(function(e) {
        setTimeout(function(e){
            setInterval(function(e){
            if($('.pac-container.pac-logo').last().css('display') != 'none' ){
                $('.pac-container.pac-logo').first().children('.pac-item').appendTo($('.pac-container.pac-logo').last())
            }
            else{
                $('.pac-container.pac-logo').last().children('.pac-item').appendTo($('.pac-container.pac-logo').first())
            }
            },100)

        }
        ,300)
    });
}

CSS:

.pac-container.pac-logo:last-of-type {
     box-shadow: none !important;
}
.pac-container.pac-logo:last-of-type:after {
    content: none !important;
}
Пока Google не решит потратить 1 минуту на разработку обновления, это лучшее, что вы можете получить
-2

что этот код будет работать .. попробуйте это

// FOR SPECIFIC COUNTRY 'INDIA' ONLY 
var options = {
    types: ['(cities)'],
    componentRestrictions: {country: "IN"}
};

autocomplete = new google.maps.places.Autocomplete(document.getElementById('text_box_id'), options);
/*  When the user selects an address from the dropdown,
    populate the address fields in the form. */
google.maps.event.addListener(autocomplete, 'place_changed', function() {
    fillInAddress();
});

// FOR SPECIFIC COUNTRY 'US' ONLY 
var options = {
    types: ['(cities)'],
    componentRestrictions: {country: "US"}
};

autocomplete = new google.maps.places.Autocomplete(document.getElementById('text_box_id'), options);
/*  When the user selects an address from the dropdown,
    populate the address fields in the form. */
google.maps.event.addListener(autocomplete, 'place_changed', function() {
    fillInAddress();
});
3

вого проекта.

Функция фильтрует ограничения по нескольким компонентам и объединяет лучшие результаты в один массив. Это означает, что конкретные наборы результатов даются друг за другом.

Возможно, это решение можно оптимизировать, т. Е. Весь результат для всех стран или регионов должен быть пересчитан для «веса». административных районов, городов и улиц.

Скриптованный скриптВот.

Основной функционал (несколько запросов с обратным вызовом впоследствии):

       service = new google.maps.places.AutocompleteService();
       var request1 = {
         input: inputData,
         componentRestrictions: {country: 'de'},
       };
       var request2 = {
         input: inputData,
         componentRestrictions: {country: 'at'},
       };
       var request3 = {
         input: inputData,
         componentRestrictions: {country: 'ch'},
       };
       $('#result').empty();
       service.getPlacePredictions(request1, callback);
       service.getPlacePredictions(request2, callback);            
       service.getPlacePredictions(request3, callback);   
1

Просто чтобы обновитьпосле выпуска версии 3.27 API Карт JavaScript в январе 2017 года фильтр нескольких стран становится возможным, передавая массив строковых кодов стран.

-2

чтобы получить адрес для нескольких стран, возможно, это будет работать для вас, ребята. var valueofcountry = "ca"; // предположим, что это значение исходит от флажка / радио

    var autoCompleteOptions = {componentRestrictions: {country: valueofcountry}};
6

вы не можете фильтровать из нескольких стран. Это известная проблемасообщили здесь.

Затем для вашего кода вы должны использовать двухсимвольную строку для кода страны:

componentRestrictions can be used to restrict results to specific groups. Currently, you can use componentRestrictions to filter by country. The country must be passed as as a two character, ISO 3166-1 Alpha-2 compatible country code. Source.

Здесь одна странарабочий образец Я спросил (взято изСписок образцов Google).

Похожие вопросы