Conseil
Si vous recherchez des bibliothèques de clients Java pour les API suivantes, consultez les API de la plate-forme Google Maps dans les bibliothèques client cloud pour Java (sorties).
Les nouvelles API ne seront pas ajoutées à cette bibliothèque client.
Utiliser Java? Vous voulez géocode quelque chose? Vous cherchez des directions? Peut-être des matrices de directions? Cette bibliothèque apporte les services Web de l'API Google Maps à votre application Java côté serveur.
Le client Java pour Google Maps Services est une bibliothèque client Java pour les API Google Maps suivantes:
Le client Java de Google Maps Services est conçu pour être utilisé dans les applications de serveur et Android. Dans les deux cas, il est important d'ajouter des restrictions de clé de l'API pour améliorer la sécurité de votre clé API. Des mesures de sécurité supplémentaires, telles que la cachette de votre clé du contrôle de version, devraient également être mises en place pour améliorer davantage la sécurité de votre clé API.
Vous pouvez vous référer aux meilleures pratiques de sécurité des API pour en savoir plus sur ce sujet.
Note
Si vous utilisez cette bibliothèque sur Android, assurez-vous que votre application utilise au moins la version 0.19.0 de cette bibliothèque afin que les restrictions de clé API puissent être appliquées.
Vous pouvez ajouter la bibliothèque à votre projet via Maven ou Gradle.
Note
Depuis 0.1.18, il y a maintenant une dépendance à SLF4J. Vous devez ajouter l'une des dépendances de l'adaptateur qui a du sens pour votre configuration de journalisation. Dans les échantillons de configuration ci-dessous, nous intégrons SLF4J-NOP, mais il y en a d'autres comme SLF4J-LOG4J12 et SLF4J-JDK14 qui auront plus de sens dans d'autres configurations. Cela empêchera un message d'avertissement émis lorsque vous commencerez à utiliser 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 '
}
Vous pouvez trouver la dernière version en haut de cette lecture ou en recherchant Maven Central.
Voir le javadoc.
Des documents supplémentaires pour les services Web inclus sont disponibles sur https://developers.google.com/maps/.
Cet exemple utilise l'API de géocodage avec une clé d'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 ();
Remarque: Le GeoApiContext
est conçu pour être un singleton dans votre application. Veuillez instancier un sur le démarrage de l'application et continuez à l'utiliser pour la durée de vie de votre application. Cela permettra l'application des QPS appropriée dans toutes vos demandes.
À la fin de l'exécution, appelez la méthode shutdown()
de GeoApiContext
, sinon le thread restera instancié en mémoire.
Pour plus d'exemples d'utilisation, consultez les tests.
Pour utiliser Google App Engine avec cette bibliothèque client, ajoutez la dernière dépendance du moteur d'applications à votre fichier build.gradle
:
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
Vous pouvez ensuite utiliser cette bibliothèque client sur Google App Engine avec le changement de code suivant:
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
L'argument new GaeRequestHandler.Builder()
à GeoApiContext.Builder
's requestHandlerBuilder
indique au client Java des services Google Maps pour utiliser les appels appropriés pour faire des demandes HTTP à partir de Google App Engine, au lieu de la stratégie par défaut OKHTTP3.
Ne dormez plus jamais entre les demandes! Par défaut, les demandes sont envoyées aux limites de taux attendues pour chaque service Web, généralement 50 requêtes par seconde pour les utilisateurs gratuits. Si vous souhaitez accélérer ou ralentir les demandes, vous pouvez également le faire, en utilisant new GeoApiContext.Builder().queryRateLimit(qps).build()
. Notez que vous devez toujours gérer manuellement le retard entre la demande initiale et les pages successives lorsque vous passez à travers plusieurs ensembles de résultats.
Réessayez automatiquement lorsque des échecs intermittents se produisent. Autrement dit, lorsque l'une des erreurs 5xx de récupération est renvoyée de l'API.
Pour modifier ou désactiver les tentatives automatiques, voir ces méthodes dans GeoApiContext
:
.disableRetries()
.maxRetries()
.retryTimeout()
.setIfExceptionIsAllowedToRetry()
Objets natifs pour chacune des réponses de l'API.
Toutes les demandes prennent en charge le style d'appel synchrone ou asynchrone.
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.
}
});
Note
Vous aurez besoin d'une clé API pour exécuter les tests.
# Compile and package the project
$ ./gradlew jar
# Run the tests
$ ./gradlew test
Cette bibliothèque utilise des services de plate-forme Google Maps. L'utilisation des services de plate-forme Google Maps via cette bibliothèque est soumise aux conditions d'utilisation de la plate-forme Google Maps.
Cette bibliothèque n'est pas un service de noyau Google Maps Platform. Par conséquent, les conditions d'utilisation de la plate-forme Google Maps (par exemple, les services de support technique, les accords de niveau de service et la politique de dépréciation) ne s'appliquent pas au code de cette bibliothèque.
Cette bibliothèque est proposée via une licence open source. Il n'est pas régi par les directives sur les services de support technique de la plate-forme Google Maps, le SLA ou la politique de dépréciation (cependant, tous les services de plate-forme Google Maps utilisés par la bibliothèque restent soumis aux conditions d'utilisation de Google Maps Platform).
Cette bibliothèque adhère au versioning sémantique pour indiquer lorsque des modifications incompatibles sont introduites. En conséquence, bien que la bibliothèque soit dans la version 0.x, des modifications incompatibles vers l'arrière peuvent être introduites à tout moment.
Si vous trouvez un bogue ou avez une demande de fonctionnalité, veuillez déposer un problème sur GitHub. Si vous souhaitez obtenir des réponses aux questions techniques des autres développeurs de plate-forme Google Maps, demandez à l'un de nos canaux communautaires de développeurs. Si vous souhaitez contribuer, veuillez consulter le guide de contribution dans le référentiel GitHub.