【问题标题】:How to add session token on Google Place AutoComplete API如何在 Google Place AutoComplete API 上添加会话令牌
【发布时间】:2019-11-18 18:15:06
【问题描述】:

我有一个用于地址搜索的输入,它调用 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>

它正在工作,我有自动完成功能,但这个脚本不使用唯一的会话令牌。因此,对于输入中输入的每个字母,每个查询都使用不同的查询。

【问题讨论】:

标签: javascript google-maps google-api google-places-api


【解决方案1】:
【解决方案2】:

上面的答案有一个小错误。应该是sessiontoken,而不是sessionToken

autocompleteService.getPlacePredictions({
  input: 'pizza near Syd',
  sessiontoken: sessionToken
},
displaySuggestions);

https://developers.google.com/places/web-service/session-tokens

【讨论】:

  • 不,不是。这是sessionToken。你可以自己试试。如果您将属性命名为 sessiontoken,则不会将令牌添加到请求中。如果您将其命名为sessionToken,它会附加到请求中。所以请删除这个答案,它可能会误导其他人。另外,您添加的链接有点无效,因为该文档页面实际上并未完成,看起来他们中途放弃了它,所以您不能信任它。
【解决方案3】:

您正在使用自动处理会话的自动完成小部件。您不需要根据Google's documentation 自己生成会话。

如果您想使用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);

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 2017-01-15
    • 2020-08-10
    • 2019-03-15
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    相关资源
    最近更新 更多