Я делаю запросы в Google автозаполнения и детали API. Для обоих я использую токены сессий, чтобы использовать API автозаполнения бесплатно, но я не вижу Autocomplete (included with Places Details) SKU
в отчете Google. Я начал использовать его неделю назад, и все, что я вижу, это SKU: Autocomplete without Places Details – Per Session
.
В моем коде я генерирую новый UUID-совместимый токен сеанса версии 4 после того, как сделан запрос к API данных. Я следую инструкциям в документах, которые говорят это:

Так что я делаю именно это. Но я не вижу Autocomplete (included with Place Details)
в отчете. Я уверен, что было сделано много звонков. Есть идеи, почему это происходит?
Примечание: вместо placeid
я использую параметр place_id
для вызова сведений, который также работает. Я не думаю, что это причина, но в любом случае ...
Я использую эту функцию для генерации токенов сессии:
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;
})();
Выводит строку в следующем формате: a28cf301-d8fd-4ebd-ac25-a94a37113b6c
.
Я использую управление листовки для выполнения запросов.
При каждом вводе буквы вызывается следующая функция:
// Places Autocomplete call
autocomplete: function(e) {
var mapCenter = this._map.getCenter();
var url = this.options.url + '/autocomplete?' +
'input=' + this.input.value + '&' +
'location=' + mapCenter.lat + ',' + mapCenter.lng;
if (this.options.useSessions) {
url += '&sessiontoken=' + this.sessionToken;
}
var geocoder = this;
$.get(url, function(data, status) {
if (data === undefined || data.status !== 'OK') {
return;
}
// Use predictions to populate a list
});
},
Эта функция заполняет список предсказаниями и добавляет прослушиватели событий щелчка для каждого элемента списка. При нажатии на элемент вызывается следующая функция.
// Place Details request
focusSelected: function(e) {
var url = this.options.url + '/details?' +
'place_id=' + e.target.place_id;
if (this.options.useSessions) {
url += '&sessiontoken=' + this.sessionToken;
this.sessionToken = UUID.generate(); // This creates a new token
}
var geocoder = this;
$.get(url, function(data, status) {
if (data === undefined || data.status !== 'OK') {
return;
}
// Use result
});
},
Я также задаю ключ API в каждом вызове. Не против этого.