Google AutocompleteService getPlacePredictions не работает - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь запустить настраиваемое автозаполнение на моем сайте. Я попытался использовать API автозаполнения мест Google для достижения этой цели. Я ожидал, что сначала просто выведу прогнозы в журналы, чтобы убедиться, что они работают правильно, но, как кажется, он не доходит до функции обратного вызова, и я не получаю сообщения об ошибке для работы. НЕТ.

Я начал с добавления библиотеки мест Google:

<script src="https://maps.googleapis.com/maps/api/js?key=[Here-I-Entered-My-API-Key]&libraries=places"></script>

Затем я попробовал несколько вариантов:

  1. Сначала я попробовал с простым Автозаполнение запроса, чтобы увидеть любой результат. Я ввел следующий код:

    let searchInput = $( ".search-input" )[0];
    autocomplete = new google.maps.places.Autocomplete(searchInput, {
            types: ["address"]
        });
    

При этом ничего не получилось, параметры автозаполнения не отображались.

Во второй попытке я попытался использовать AutocompleteService, чтобы просто выполнить предсказания, как я хотел изначально, и распечатать его в журнале консоли. Я ввел следующий код:

// Create a new session token.
let sessionToken = new google.maps.places.AutocompleteSessionToken();

// Pass the token to the autocomplete service.
let autocompleteService = new google.maps.places.AutocompleteService();
autocompleteService.getPlacePredictions(
        {
                input: "Mitt",
                type: ["address"],
                componentRestriction: {country: 'de'},
                sessionToken: sessionToken
        },
        function (predictions, status) {
                console.log("Query resulted in -> " + status);
                console.log("Received " + predictions.length + " predictions");
                for(let prediction of predictions){
                    console.log(prediction);
                    console.log(prediction.description);
                }
        }
);

Просто для того, чтобы убедиться, что он показывает мне результат, но, как кажется, он не достигает моей функции обратного вызова.

Я попытался скопировать примеры из других видов использования, которые я видел в Интернете, тоже не сработало. Я не могу понять, что происходит. Мой API-ключ работает, я включил библиотеку Places в GCP (хотя я не видел, как пытаться добиться этого внутри GCP). Нет никакой ошибки, которую я могу использовать, чтобы понять, в чем проблема, она просто не работает.

Я пытался использовать с ключом API места REST API, и это работало, но я не Я не хочу связываться с запросами из разных источников, и я не думаю, что это необходимо в данном конкретном случае c.

Я был бы очень признателен за помощь. Спасибо!

1 Ответ

0 голосов
/ 17 апреля 2020

Мне удалось это решить. Очевидно, что причиной этой проблемы был один вызов библиотек API Google и один вызов Google API для обратного вызова карты. Нужно объединить это вместе следующим образом:

<script src="https://maps.googleapis.com/maps/api/js?key=[Here-I-Entered-My-API-Key]&libraries=places&callback=initMap"></script>
...