Как добавить токен сеанса в Google Place AutoComplete API (Javascript) - PullRequest
2 голосов
/ 09 июля 2019

У меня есть вход для поиска адреса, который вызывает Google API для автозаполнения.Это работает, но я хочу добавить токен сеанса в запрос, но я не знаю, как это сделать.

Я ищу везде в Интернете, но вижу только: "используйте var sessionToken = new google.maps.places.AutocompleteSessionToken (); для генерации токена сессии ".Хорошо, но я не знаю, куда поместить эту переменную: /

<script type="text/javascript"  src="https://maps.googleapis.com/maps/api/js?libraries=places&key=MY_API_KEY"></script>
<form>
    <label>Address</label>
    <input id="user_input_autocomplete_address" placeholder="Votre adresse...">
</form>
<script>
    function initializeAutocomplete(id) {
        var element = document.getElementById(id);

        if (element) {
            var autocomplete = new google.maps.places.Autocomplete(element, { types: ['address'] });
            autocomplete.setComponentRestrictions({'country': ['fr']});
            google.maps.event.addListener(autocomplete, 'place_changed', onPlaceChanged);
        }
    }   
    function onPlaceChanged() {  
        var place = this.getPlace();
        console.log(place);

        for (var i in place.address_components) {    
            var component = place.address_components[i];    

            for (var j in component.types) {
                var type_element = document.getElementById(component.types[j]);      

                if (type_element) {        
                    type_element.value = component.long_name;
                }    
            }  
        }
    }
    google.maps.event.addDomListener(window, 'load', function() {  
        initializeAutocomplete('user_input_autocomplete_address');
    });
</script>

Это работает, у меня автоматическое завершение, но этот скрипт не использует уникальный токен сеанса.Таким образом, для каждой буквы, введенной во ввод, каждый запрос использует свой запрос.

1 Ответ

0 голосов
/ 12 июля 2019

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

Если вы хотите использовать класс AutocompleteService, вам действительно нужно использовать google.maps.places.AutocompleteSessionToken (). Посмотрите пример кода Google по ссылке выше, чтобы увидеть, как и где он добавлен:

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

// Pass the token to the autocomplete service.
var autocompleteService = new google.maps.places.AutocompleteService();
autocompleteService.getPlacePredictions({
  input: 'pizza near Syd',
  sessionToken: sessionToken
},
displaySuggestions);

Надеюсь, это поможет!

...