Estoy utilizando el cliente de Java para la API de Google Places:
<dependency>
<groupId>com.google.maps</groupId>
<artifactId>google-maps-services</artifactId>
<version>0.9.1</version>
</dependency>
El siguiente es cómo utilizar la API de autocompletar en mi servidor:
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;
}
Ahora, en el momento que estoy pasando null
como sessionToken
:
.placeAutocomplete(geoApiContext, query, null)
sobre todo porque no estoy del todo seguro de cómo se supone que estos trabajos.
Podría crear un token de cada 2 minutos y utilizar esa señal no importa qué usuario está actualmente escribiendo.
Así que esto significaría si dos usuarios la búsqueda "Location" y "lugar", las consultas entrantes podría tener este aspecto:
[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
Ahora, yo podría utilizar para todas aquellas solicitudes de la misma manera X
y crear uno nuevo cada uno o dos minutos, pero no sé si esto está permitido y si esto afecta a la facturación.
La otra forma sería crear un caché por usuario que almacena para el usuario 1
y 2
una ficha X1
y X2
, respectivamente. Esta solución podría ser un poco más complejo y por eso me gustaría saber si la primera solución ya que funcionaría en el sentido de que no vamos a obtener una factura por cada petición.
Documentación
Usted debe ser el uso de tokens de sesión debido a que afectan a la facturación. De acuerdo con la documentación de Google :
Si el
sessiontoken
se omite el parámetro, o si vuelve a utilizar un identificador de sesión, la sesión se carga como si no se proporcionó token de sesión.
Ejemplo de solicitud que utiliza un sessiontoken:
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=1600+Amphitheatre&key=<API_KEY>&sessiontoken=1234567890
Por favor, cree una nueva y única sesión de símbolo para cada sesión de autocompletar como se sugiere en la documentación vinculada.
Para aclarar aún más sobre las sesiones:
Un identificador de sesión es bueno para una sesión de usuario y no debe ser utilizado por más de una sesión de usuario.
Una sesión comienza cuando el usuario comienza a escribir una consulta, y concluye cuando seleccionan un lugar (es decir, cuando una de detalles de sitio se hace llamar). Esto está catalogado en el autocompletado (incluido con sitios detalles) - Por sesión SKU .
Si éste usuario no sin hacer una selección, la sesión terminará después de un corto período de tiempo (es decir, a los pocos minutos del inicio de la sesión). Esto está catalogado en el autocompletar sin Lugares detalles - por sesión SKU .
Si no se utiliza un token de sesión o se considera no válida, se le facturará en el autocompletar - por solicitud SKU .
Espero que esto ayude.