【发布时间】:2019-12-11 22:16:20
【问题描述】:
我正在为 Google Places API 使用 Java 客户端:
<dependency>
<groupId>com.google.maps</groupId>
<artifactId>google-maps-services</artifactId>
<version>0.9.1</version>
</dependency>
以下是我在服务器上使用自动完成 API 的方式:
public List<AutocompletePrediction> searchAddress(String query) {
List<AutocompletePrediction> predictions = new ArrayList<>();
try {
AutocompletePrediction[] autocompletePredictions = PlacesApi
.placeAutocomplete(geoApiContext, query, null)
predictions.addAll(Arrays.asList(autocompletePredictions));
} catch (ApiException | InterruptedException | IOException e) {
e.printStackTrace();
}
return predictions;
}
现在,当时我将null 传递为sessionToken:
.placeAutocomplete(geoApiContext, query, null)
主要是因为我不完全确定这些应该如何工作。
我可以每 2 分钟创建 一个 令牌,并且无论哪个用户当前正在输入,都可以使用该令牌。
所以这意味着如果两个用户搜索“位置”和“地点”,传入的查询可能如下所示:
[User 1] 1. lo
[User 2] 2. p
[User 1] 3. loca
[User 2] 4. plac
[User 1] 5. locat
[User 1] 6. location
[User 2] 7. place
现在,我可以对所有这些请求使用相同的令牌 X 并每隔一两分钟创建一个新令牌,但我不知道这是否允许以及这是否会影响计费。
另一种方法是为每个用户创建一个缓存,分别为用户1 和2 存储令牌X1 和X2。这个解决方案会稍微复杂一点,这就是为什么我想知道第一个解决方案是否已经可以工作,因为我不会为每个请求都付费。
文档
【问题讨论】:
标签: java google-maps google-places-api googleplacesautocomplete