我正在尝试让Google地方自动完成功能可用于会话,但是在任何使用它们的地方都找不到示例。每次搜索时,我的API帐单获得10-20或更多点击。我想是每当新字母添加到搜索框中时。 据我了解,会话应将这些分组,以便每次搜索只向我收费一次,而不是每次键入字母收费。 此示例还在注释中指出它使用了自动完成小部件(我已经在其中搜索了信息),并且看起来它应该自动实现会话。
有没有人举一个例子,说明如何使用JavaScript中的会话来进行Google Places自动完成呼叫?还是知道为什么我要为每个字母付费?
我正在使用的示例如下。
$Company=$ExecutionContext.InvokeCommand.ExpandString($ConfigFile.config.Company)
答案 0 :(得分:0)
据我了解,您必须将sessionId放入src参考。 像这样:
<script src="https://maps.googleapis.com/maps/api/js?key=#########MY_API_KEY##############&sessiontoken=####&libraries=places&callback=initAutocomplete"
async defer></script>
注意,我在api键之后添加了&sessiontoken = #### 。
Google建议使用UUID作为会话令牌。 以下是从此处获取UUID的函数:GooglePlaces Autocomplete
var UUID = (function() {
var self = {};
var lut = [];
for (var i=0; i<256; i++) { lut[i] = (i<16?'0':'')+(i).toString(16); }
self.generate = function() {
var d0 = Math.random()*0xffffffff|0;
var d1 = Math.random()*0xffffffff|0;
var d2 = Math.random()*0xffffffff|0;
var d3 = Math.random()*0xffffffff|0;
return lut[d0&0xff]+lut[d0>>8&0xff]+lut[d0>>16&0xff]+lut[d0>>24&0xff]+'-'+
lut[d1&0xff]+lut[d1>>8&0xff]+'-'+lut[d1>>16&0x0f|0x40]+lut[d1>>24&0xff]+'-'+
lut[d2&0x3f|0x80]+lut[d2>>8&0xff]+'-'+lut[d2>>16&0xff]+lut[d2>>24&0xff]+
lut[d3&0xff]+lut[d3>>8&0xff]+lut[d3>>16&0xff]+lut[d3>>24&0xff];
}
return self;
})();
Google还有一个util端点,应该为您提供会话令牌:require('@ google / maps')。util.placesAutoCompleteSessionToken()