Mah*_*ani 6 javascript google-maps google-maps-api-3 google-places-api google-places-autocomplete
最近,Google更新了一些结算政策,作为他们为自动填充请求引入了SessionTokens的一部分.
作为其中一部分,同一会话中的每个请求都将在请求中发送相同的令牌,如果我们使用Google API提供的自动完成小部件,则会自动发送.
但是,我看到为同一会话中的每个请求生成了不同的令牌.我错过了什么,请指导我.这是样本的插件,在那里我观察到为每次击键生成的不同令牌.
var options = {
types: ['(cities)']
};
var searchBox = new google.maps.places.Autocomplete(input, options);
Run Code Online (Sandbox Code Playgroud)
页面的我的代码
```
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
```
根据Google文档(始终在页面底部以“警告文字”显示)... https://developers.google.com/maps/documentation/javascript/places-autocomplete
警告:请确保为每个新会话传递唯一的会话令牌。对一个以上的会话使用相同的令牌将导致对每个请求单独计费。请注意,“自动完成小部件”会自动处理会话(您无需执行其他任何操作)。现在,让我们进入基本的Javascript示例。
这可能有点令人困惑,只是因为您尝试了解Google文档的名称以及这些内容,并且可能是因为您以一种方式进行操作,然后突然老板或客户或其他人要求您使用Sessions / Session代币代替。如果您不这样做,new google.maps.places.Autocomplete()
而是AutocompleteServices
使用“自动完成小部件”。自动完成小部件将自行处理会话/会话令牌。
我信任google和google docs,但是网上对此有很多困惑。因此,除了一个月后得到帐单外,我还想证明。仅供参考-Google Clound平台控制台(https://console.cloud.google.com/google/maps-apis?pli=1)中的帐单将立即向您显示,并将佐证以下内容。
查看开发工具中的Network活动,我们看到有一些自动完成服务的调用。我在这里没有使用“ AutocompleteService”功能,这是一个基本示例设置,与上面通过“ Autocomplete Widget”通过列出的回调方法相同new google.maps.places.Autocomplete()
。
当您转到页面时,可以首先看到对库的调用,以及下面的开发工具的第一张屏幕截图。接下来,我进行了搜索,该搜索有效。我开始输入1990年的基本地址,之后您会看到对API的4个请求。我输入的每个字符有1个请求/调用。这些请求名称均以“ AutocompleteServices.GetPredictions ...”开头,即使我没有在代码中使用AutocompleteServices。在后端,“自动完成小部件”正在使用“ AutocompeleteServices”并为您完成所有UI / UX工作以及功能,会话和令牌。这些在下面的开发工具屏幕截图1-3中。然后您会看到对“ PlaceServces.GetPlaceDetails”的第5个请求调用,这是我从下拉列表中选择的。这是下面的开发工具截图4。查看标题,对于这些请求中的每一个,我都会看到一些事情。首先,在底部圈出的是“令牌”。我知道我刚才说过,而Google Docs刚刚说过,“自动完成小部件”会处理会话令牌,并且敏锐的目光会看到,每个请求的“令牌”值都不同。它也不是“版本4 UUID”格式,这是Google推荐的,但这是一个不同的主题。标头中的“令牌”不是会话令牌。该文件已埋藏在Google文档中该文件的较早版本已有5年的文档中,但是已不再使用,并且已为每个请求自动设置该文件,并且不是会话令牌。因此,“会话令牌在哪里?” 你可能会问。
标头中以1、2等开头的其他项是传递的不同会话变量。在这种情况下,会话令牌为“ 20s”,后跟由“自动完成小部件”自动创建的版本4 UUID。敏锐的眼睛也会注意到,下面的3个屏幕截图是相同的。页面刷新后,我有第五张屏幕截图,显示会话令牌已更改。您可以在我的代码中看到我没有指定这些内容,但是因为我使用的是“自动完成小部件”
恐怕您在请求中可以看到的令牌参数不是场所自动完成会话令牌。甚至在Google Maps平台更改之前,该参数就存在。我不知道Google如何管理自动完成会话令牌,可能是它们在服务器端处理它们。
该文档指出,自动完成小部件已实现了自动会话令牌。
自动完成功能(Web服务和JavaScript)和JavaScript自动完成小部件已更新为使用基于会话的计费。
注意:JavaScript自动完成小部件不需要更改代码,因为该小部件会自动为您管理会话。
来源:https://cloud.google.com/maps-platform/user-guide/pricing-changes/
可以肯定的是,我建议您在开发人员控制台中查看您的帐单报告。
https://console.cloud.google.com/billing/unbilledinvoice?project=YOUR_PROJECT_ID&authuser=1
在此报告中,您将看到使用哪种方法为地点自动完成请求计费。查看“产品”列所在的行,Places API
“资源”列将显示用于结算Autocomplete - Per Request
或的方法Autocomplete - Per Session
。
如果您将自动填充小部件与自动会话结合使用,但此报告仅显示Autocomplete - Per Request
通过https://console.cloud.google.com/google/maps-apis/support延伸至Google Maps技术支持的使用情况
小智 -3
如果您使用 google.maps.places.Autocomplete(input, options); 它会自动添加会话令牌。
在您的 pluker 示例中,没有自动完成功能,但有新的 google.maps.places.SearchBox
归档时间: |
|
查看次数: |
4294 次 |
最近记录: |