Раскрывающийся список автозаполнения в Google Places не вызывает событие place_changed в iOS9 с использованием ionic3 - PullRequest
0 голосов
/ 18 ноября 2018

Это пример кода, очень простой, но «place_changed» не запускается в iOS

var input = document.getElementById('autocomplete');
        var autocomplete = new google.maps.places.Autocomplete(input);

        google.maps.event.addListener(autocomplete, 'place_changed', function(){
            mylocation = autocomplete.getPlace();
            alert(mylocation);
        })

пробовал эти решения:

1: удалено автозаполнение из прослушивателя

google.maps.event.addListener('place_changed', function()

2: добавлено tappable , поскольку pac-item не является кнопкой, ссылка.

let list1 = document.querySelectorAll(".pac-item,.pac-container");

     console.log('pacIt', list1);

     for (let i = 0; i < list1.length; ++i) {
         list1[i].setAttribute('tappable', 'true');
     }

3: добавлено needsclick

 let list2 = document.querySelectorAll(".pac-item, .pac-item span");

     console.log('pacIt', list2);

     for (let i = 0; i < list2.length; ++i) {
        list2[i].classList.add('needsclick');
    }

И ни одно из решений не помогло мне решить проблему.

Пожалуйста, у кого-нибудь есть исправления, пожалуйста, поделитесь.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 апреля 2019

Нет исправления ошибки от Google

Следовательно, я создал собственное автозаполнение

Сначала запустите компонент:

this.customAutoComp = new google.maps.places.AutocompleteService(
                {
                    componentRestrictions: { 'country': 'in' }
                });

Далее

 this.customAutoComp.getQueryPredictions({ input: value }, (results, status) => {


                            if (status == google.maps.places.PlacesServiceStatus.OK) {

console.log(results); 
        }
    });

Результаты будут отображаться в пользовательском интерфейсе с использованием UL, LI или любого другого стиля карт.

Нажмите на любой адрес

public clickAddress(address) {

 var geocoder = new google.maps.Geocoder();

 geocoder.geocode({ 'address': address}, (results, status) => {
            if (status == google.maps.GeocoderStatus.OK) {

 console.log(results);
}
});
...