Google.maps.event.addDomListener() устарел, вместо него используйте стандартный метод addEventListener() : Ошибка автозаполнения Google Place
Я пытаюсь добавить автопредложение места Google, я скопировал код с сайта разработчика, чтобы попробовать, но получил ошибку : google.maps.event.addDomListener() устарел, вместо него используйте стандартный метод addEventListener().. Также я не получаю никаких предложений о местах.
https://developers.google.com/maps/documentation/javascript/places-autocomplete
google.maps.event.addDomListener(window, 'load', initializeAutocomplete);
я также добавил скрипт
<script src="https://maps.googleapis.com/maps/api/jskey=api_key&libraries=places"></script>
Я реализовал то же самое в одном html, он работал успешно, но когда я использовал его на кнопке, которая открывает всплывающее окно ( форма, которая имеет place-input), он выдал мне эту ошибку.
Примечание : Я также пробовал addEventListener но это дает мне ошибку : google.maps.event.addEventListener is not a function
Есть ли у вас идеи, почему я получаю эту ошибку, и как я могу это исправить?
Поскольку функция addDomListener() устарела, используйте вместо нее стандартный метод addEventListener(), сделать это можно следующим образом:
window.addEventListener('load', initializeAutocomplete)
Замените аналогичным образом во всех необходимых местах.
google.maps.event.addDomListener(<OBJECT>,<EVENT>,<FUNCTION>);
to
<OBJECT>.addEventListener(<EVENT>,<FUNCTION>);
Это не так просто, как просто "Replace addDomListener" с помощью copy/paste. lol. это было бы неплохо, не так ли?
Также следует отметить, что при загрузке API Google Maps вы можете просто передать функцию initializeAutocomplete через URL следующим образом:
<script type='text/javascript' src='https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_HERE&libraries=places&callback=initAutocomplete'></script>
Итак, это так же просто, как прикрепить к этому url обратный вызов GET var: https://maps.googleapis.com/maps/api/js?key=YOUR_KEY_HERE&callback=initAutocomplete
В вашем примере просто добавьте &callback=initAutocomplete
= done.
полная остановка
Рассмотрим другие случаи - рассмотрим следующее использование. Это (из старого архива примеров google maps) больше не будет работать:
google.maps.event.addDomListener( radioButton, 'click', function() {
autocomplete.setTypes( ['establishment'] );
// this causes google.maps.event.addDomListener() is deprecated warning
});
Это никогда не сработает Потому что нет google.maps.event.addEventListener
google.maps.event.addEventListener( radioButton, 'click', function() {
autocomplete.setTypes( ['establishment'] );
});
// lands you: Uncaught TypeError: google.maps.event.addEventListener is not a function
Вам нужно переосмыслить+переписать следующим образом:
document.getElementById(radioButton).addEventListener('click', function(e) {
autocomplete.setTypes( ['establishment'] ); // yellowstone PARK
autocomplete.setTypes( ['address'] ); // some address with yellowstone st
});
теперь это снова работает как ожидалось, без ошибок google.maps.event.addDomListener() is deprecated
Так что в вашем случае, если вы по какой-то причине не можете добавить &callback=initAutocomplete
в ваш URL или не хотите - тогда рассмотрим следующее:
// notworksolutions
google.maps.event.addDomListener(window, 'load', initializeAutocomplete);
google.maps.event.addEventListener(window, 'load', initializeAutocomplete);
// solution that work
window.addEventListener('load', (event) => { initializeAutocomplete(); });
Это в Google Maps Issue Tracker помечено как исправленное. Исправление должно появиться в ближайшем выпуске.