API Карт Google после работы в течение нескольких лет начал работать хаотично около месяца назад.
Код все прекрасно работает с моей машины разработки (мой localHost), во всех браузерах, никаких проблем.
Но на производственном сервере при звонке из домена https (сервер, обратный прокси через nginx, используя Cloudflare) я обнаружил следующее поведение:
a.В Chrome и Safari он просто возвращает карту initMap по умолчанию, не найденный результат или маркер (пин-код).
b.Firefox, все отлично работает.
c.То есть, он работает только при обновлении страницы, а не при переходе от страницы к странице.
Из всего, что я пробовал:
- Очистка всех файлов cookie и файлов из кеша браузера.
- Изменение настроек в Cloudflare (различные настройки кэширования и скорости).
Основной код выглядит следующим образом (развертывается через freemarker, поэтому игнорируйте эти части. Код работает, как я описал выше.
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: {lat: 53.3280182, lng: -6.3743767}
});
var geocoder = new google.maps.Geocoder();
google.maps.event.addDomListener(window, 'load', function() {
geocodeAddress(geocoder, map);
});
}
function geocodeAddress(geocoder, resultsMap) {
var address = "${clientLocation}";
geocoder.geocode({'address': address}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
resultsMap.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: resultsMap,
position: results[0].geometry.location
});
}
});
}
src="https://maps.googleapis.com/maps/api/js?key=xxxx&callback=initMap"
async defer>
РЕДАКТИРОВАТЬ: В ответ на комментарий ниже:
У меня действительно был следующий код во время тестирования (он был удален для производства), и ничего не возвращалось . (Извините, я должен был это упомянуть.)
alert ('Геокод не был успешным по следующей причине:' + status);
Я тоже ничего не получал в консоли Java.Однако на основании полезного комментария, сделанного ниже, я изменил уровень предупреждения на «подробный» и увидел следующую ошибку.
[Нарушение] Добавил непассивный слушатель событийк блокирующему прокрутку событию «touchmove»Пометьте обработчик событий как пассивный, чтобы сделать страницу более отзывчивой.См https://www.chromestatus.com/feature/5745543795965952