Consejo
Si está buscando bibliotecas de clientes Java para las siguientes API, consulte las API de la plataforma de Google Maps en las bibliotecas de clientes en la nube para Java (lanzamientos).
Las nuevas API no se agregarán a esta biblioteca de clientes.
¿Usar Java? ¿Quieres geocodificar algo? ¿Buscas direcciones? ¿Quizás matrices de direcciones? Esta biblioteca lleva los servicios web de Google Maps API a su aplicación Java del lado del servidor.
El cliente Java para los servicios de Google Maps es una biblioteca de clientes Java para las siguientes API de Google Maps:
El cliente Java para los servicios de Google Maps está diseñado para su uso en aplicaciones de servidor y Android. En cualquier caso, es importante agregar restricciones de clave API para mejorar la seguridad de su clave API. También se deben establecer medidas de seguridad adicionales, como ocultar su clave del control de versiones, para mejorar aún más la seguridad de su clave API.
Puede consultar las mejores prácticas de seguridad de API para obtener más información sobre este tema.
Nota
Si está utilizando esta biblioteca en Android, asegúrese de que su aplicación esté utilizando al menos la versión 0.19.0 de esta biblioteca para que se puedan hacer cumplir las restricciones clave de API.
Puede agregar la biblioteca a su proyecto a través de Maven o Gradle.
Nota
Desde 0.1.18 ahora hay una dependencia de SLF4J. Debe agregar una de las dependencias del adaptador que tenga sentido para su configuración de registro. En las muestras de configuración a continuación estamos integrando SLF4J-NOP, pero hay otros como SLF4J-LOG4J12 y SLF4J-JDK14 que tendrán más sentido en otras configuraciones. Esto detendrá que se emite un mensaje de advertencia cuando comience a usar google-maps-services
.
< dependency >
< groupId >com.google.maps</ groupId >
< artifactId >google-maps-services</ artifactId >
< version >(insert latest version)</ version >
</ dependency >
< dependency >
< groupId >org.slf4j</ groupId >
< artifactId >slf4j-simple</ artifactId >
< version >1.7.25</ version >
</ dependency >
repositories {
mavenCentral()
}
dependencies {
implementation ' com.google.maps:google-maps-services:(insert latest version) '
implementation ' org.slf4j:slf4j-simple:1.7.25 '
}
Puede encontrar la última versión en la parte superior de este readme o buscando en Maven Central.
Ver el Javadoc.
La documentación adicional para los servicios web incluidos está disponible en https://developers.google.com/maps/.
Este ejemplo usa la API de geocodificación con una clave API:
GeoApiContext context = new GeoApiContext . Builder ()
. apiKey ( "AIza..." )
. build ();
GeocodingResponse response = GeocodingApi . geocode ( context ,
"1600 Amphitheatre Parkway Mountain View, CA 94043" ). await ();
Gson gson = new GsonBuilder (). setPrettyPrinting (). create ();
System . out . println ( gson . toJson ( response . results [ 0 ]. addressComponents ));
// Invoke .shutdown() after your application is done making requests
context . shutdown ();
Nota: El GeoApiContext
está diseñado para ser un singleton en su aplicación. Por favor, instanciar uno en el inicio de la aplicación y continúe usándolo para la vida útil de su aplicación. Esto permitirá una aplicación adecuada de QPS en todas sus solicitudes.
Al final de la ejecución, llame al método shutdown()
de GeoApiContext
, de lo contrario, el hilo permanecerá instanciado en la memoria.
Para obtener más ejemplos de uso, consulte las pruebas.
Para usar Google App Engine con esta biblioteca de clientes, agregue la última dependencia del motor de aplicaciones a su archivo build.gradle
:
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
Luego puede usar esta biblioteca de clientes en Google App Engine con el siguiente cambio de código:
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
El new GaeRequestHandler.Builder()
a GeoApiContext.Builder
' requestHandlerBuilder
le dice al cliente Java para los servicios de Google Maps para utilizar las llamadas apropiadas para realizar solicitudes HTTP desde Google App Engine, en lugar de la estrategia basada en Okhttp3 predeterminada predeterminada.
¡Nunca vuelvas a dormir entre solicitudes! Por defecto, las solicitudes se envían a los límites de tarifa esperados para cada servicio web, generalmente 50 consultas por segundo para usuarios gratuitos. Si desea acelerar o ralentizar las solicitudes, también puede hacerlo, usando new GeoApiContext.Builder().queryRateLimit(qps).build()
. Tenga en cuenta que aún necesita manejar manualmente el retraso entre la solicitud inicial y las páginas sucesivas cuando está pagando a través de múltiples conjuntos de resultados.
Vuelva a intentar automáticamente cuando ocurran fallas intermitentes. Es decir, cuando cualquiera de los errores 5xx retrables se devuelve de la API.
Para alterar o deshabilitar reintentos automáticos, consulte estos métodos en GeoApiContext
:
.disableRetries()
.maxRetries()
.retryTimeout()
.setIfExceptionIsAllowedToRetry()
Objetos nativos para cada una de las respuestas de la API.
Todas las solicitudes admiten estilo de llamadas síncronas o asincrónicas.
GeocodingApiRequest req = GeocodingApi . newRequest ( context ). address ( "Sydney" );
// Synchronous
try {
req . await ();
// Handle successful request.
} catch ( Exception e ) {
// Handle error
}
req . awaitIgnoreError (); // No checked exception.
// Async
req . setCallback ( new PendingResult . Callback < GeocodingResponse >() {
@ Override
public void onResult ( GeocodingResponse result ) {
// Handle successful request.
}
@ Override
public void onFailure ( Throwable e ) {
// Handle error.
}
});
Nota
Necesitará una clave API para ejecutar las pruebas.
# Compile and package the project
$ ./gradlew jar
# Run the tests
$ ./gradlew test
Esta biblioteca utiliza servicios de plataforma Google Maps. El uso de los servicios de la plataforma de Google Maps a través de esta biblioteca está sujeto a los términos de servicio de la plataforma Google Maps.
Esta biblioteca no es un servicio central de la plataforma de Google Maps. Por lo tanto, los términos de servicio de la plataforma de Google Maps (por ejemplo, servicios de soporte técnico, acuerdos de nivel de servicio y política de deprecación) no se aplican al código en esta biblioteca.
Esta biblioteca se ofrece a través de una licencia de código abierto. No se rige por la plataforma Google Maps Support Support Support Services Services, el SLA o la Política de deprecación (sin embargo, los servicios de la plataforma de Google Maps utilizados por la biblioteca están sujetos a los Términos de servicio de la plataforma Google Maps).
Esta biblioteca se adhiere a los versiones semánticas para indicar cuándo se introducen cambios incompatibles hacia atrás. En consecuencia, mientras la biblioteca se encuentra en la versión 0.x, los cambios incompatibles hacia atrás se pueden introducir en cualquier momento.
Si encuentra un error o tiene una solicitud de función, presente un problema en GitHub. Si desea obtener respuestas a preguntas técnicas de otros desarrolladores de la plataforma de Google Maps, pregunte a través de uno de nuestros canales comunitarios de desarrolladores. Si desea contribuir, consulte la guía contribuyente en el repositorio de GitHub.