Мой код для страницы
<div class="searchField">
<input id="searchLocation" name="searchLocation" type="text" placeholder="Enter an Address">
</div>
<!-- more code.... -->
<!-- footer -->
<script>
// initiate search area for autocomplete of places from Google Maps Street Addresses
function initAutocomplete() {
// define the search location box
var searchBox = $("#searchLocation")[0];
// initiate the autocomplete with the options on the search box
var autocomplete = new google.maps.places.Autocomplete(searchBox, options);
};
</script>
<script src="https://maps.googleapis.com/maps/api/js?libraries=places®ion=ca&language=en&key= [YOUR_API_KEY]&callback=initAutocomplete" async defer>
</script>
Разъяснение токена сеанса
Согласно Документам Google (внизу страницы в тексте предупреждения)... https://developers.google.com/maps/documentation/javascript/places-autocomplete
Предупреждение: Обязательно передавайте уникальный токен сеанса для каждого нового сеанса. Использование одного и того же токена для нескольких сеансов приведет к тому, что каждый запрос будет оплачиваться отдельно. Обратите внимание, что виджет автозаполнения обрабатывает сеансы автоматически (вам не нужно делать ничего дополнительно). Теперь давайте погрузимся в базовый пример Javascript.
Это может быть немного запутанным, только потому, что вы пытаетесь разобраться в номенклатуре документов Google и что это за вещи, и, возможно, потому, что вы делали это одним способом, и вдруг ваш босс или клиент или кто-то еще просит вас использовать Sessions/Session Вместо них жетоны. Если вы делаете new google.maps.places.Autocomplete()
вместо AutocompleteServices
или что-то в этом роде, вы используете виджет автозаполнения. Виджет автозаполнения сам будет обрабатывать токены сеанса/сеанса.
Докажите это!
Я доверяю Google и документации Google Developer относительно их собственных продуктов и того, как/что они делают, но в сети было много путаницы по этому поводу. Поэтому мне нужны были доказательства, помимо получения счета через месяц. К сведению: выставление счетов в консоли Google Cloud Platform (https://console.cloud.google.com/google/maps-apis?pli=1) покажет вам это почти сразу и подтвердит то, что ниже и выше.
Глядя на сетевую активность в Dev Tools, мы видим, что есть несколько вызовов службы автозаполнения.
Я не использовал здесь функцию AutocompleteService, это базовый пример настройки, такой же, как я перечислил выше для Обратный вызов с помощью виджета автозаполнения через new google.maps.places.Autocomplete()
.
Когда вы переходите на страницу, вы можете сначала увидеть вызов библиотеки, первый скриншот Dev Tools ниже.
Затем я выполнил поиск, который сработал. Я начал вводить базовый адрес 1990, после этого вы можете увидеть 4 запроса к API. 1 запрос/вызов для каждого введенного символа. Каждое из этих имен запросов начинается с AutocompleteServices.GetPredictions..., хотя я НЕ ИСПОЛЬЗОВАЛ AutocompleteServices в своем коде. На серверной части виджет автозаполнения использует AutocompeleteServices и выполняет за вас всю работу по пользовательскому интерфейсу/UX, а также функциональность, сеанс и токены. Они показаны на снимках экрана № 1–3 инструментов разработчика ниже.
Затем вы видите 5-й вызов запроса PlaceServces.GetPlaceDetails, который я выбрал из раскрывающегося списка. Это скриншот инструментов разработчика № 4 ниже. Глядя на заголовки, для каждого из этих запросов я вижу несколько вещей. Первое, что обведено внизу, — это токен. Я знаю, что только что сказал, и в документации Google только что сказано, что виджет автозаполнения обрабатывает токен сеанса, и внимательный глаз увидит, что значение этого токена отличается для каждого запроса. Он также не в формате «UUID версии 4», который рекомендуется Google, но это другая тема. Этот токен в заголовке НЕ ЯВЛЯЕТСЯ токеном сеанса. Это похоронено в документации, которой 5 лет для предыдущей версии этого в Документах Google, но это больше не используется, и автоматически устанавливается для каждого запроса и не является токеном сеанса. Итак, где тогда токен сеанса? Вы можете спросить.
Другие элементы в заголовке, начинающиеся с 1, 2 и т. д., представляют собой разные передаваемые переменные сеанса. В этом случае токен сеанса — «20s», за которым следует UUID версии 4, автоматически созданный виджетом автозаполнения. Внимательный глаз также заметит, что на 3 скриншотах ниже они одинаковы. У меня есть пятый снимок экрана после обновления страницы, который показывает, что токен сеанса изменился. Вы можете видеть в моем коде, что я не указал эти вещи, но поскольку я использую виджет автозаполнения, они сделаны за меня.
person
Keith E. Truesdell
schedule
06.12.2018