Автозаполнение Google Адресов (включено в Детали мест) SKU не запускается при использовании токенов сессии - PullRequest
0 голосов
/ 17 ноября 2018

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

В моем коде я генерирую новый UUID-совместимый токен сеанса версии 4 после того, как сделан запрос к API данных. Я следую инструкциям в документах, которые говорят это:

The workflow

Так что я делаю именно это. Но я не вижу 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 в каждом вызове. Не против этого.

1 Ответ

0 голосов
/ 09 декабря 2018

Вы увидите Autocomplete without Places Details – Per Session, если не выполните запрос Places Details в течение нескольких минут после начала сеанса.

Документация

https://developers.google.com/maps/billing/understanding-cost-of-use#ac-no-details-session

...