Tipp
Wenn Sie nach Java -Client -Bibliotheken für die folgenden APIs suchen, finden Sie in den Google Maps -Plattform -APIs in den Cloud -Client -Bibliotheken für Java (Releases).
Die neue APIs wird dieser Clientbibliothek nicht hinzugefügt.
Java verwenden? Willst du etwas Geocode? Auf der Suche nach Anweisungen? Vielleicht Matrizen von Richtungen? Diese Bibliothek bringt die Google Maps API-Webdienste in Ihre serverseitige Java-Anwendung.
Der Java -Client für Google Maps Services ist eine Java -Client -Bibliothek für die folgenden Google Maps -APIs:
Der Java -Client für Google Maps Services ist sowohl für Server- als auch in Android -Anwendungen ausgelegt. In beiden Fällen ist es wichtig, API -Schlüsselbeschränkungen hinzuzufügen, um die Sicherheit Ihres API -Schlüssels zu verbessern. Zusätzliche Sicherheitsmaßnahmen, wie das Ausblenden Ihres Schlüssels vor der Versionskontrolle, sollten ebenfalls eingerichtet werden, um die Sicherheit Ihres API -Schlüssels weiter zu verbessern.
Sie können sich auf Best Practices der API -Sicherheit verweisen, um mehr über dieses Thema zu erfahren.
Notiz
Wenn Sie diese Bibliothek auf Android verwenden, stellen Sie sicher, dass Ihre Bewerbung mindestens Version 0.19.0 dieser Bibliothek verwendet, damit API -Schlüsselbeschränkungen durchgesetzt werden können.
Sie können die Bibliothek über Maven oder Gradle zu Ihrem Projekt hinzufügen.
Notiz
Seit 0,1.18 ist jetzt eine Abhängigkeit von SLF4J. Sie müssen eine der Adapterabhängigkeiten hinzufügen, die für Ihr Protokollierungsaufbau sinnvoll ist. In den folgenden Konfigurationsproben integrieren wir SLF4J-NOP, aber es gibt andere wie SLF4J-Log4J12 und SLF4J-JDK14, die in anderen Konfigurationen sinnvoller sind. Dadurch wird eine Warnmeldung gestoppt, die ausgestrahlt wird, wenn Sie mit google-maps-services
beginnen.
< 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 '
}
Die neueste Version finden Sie oben in diesem Readme oder durch die Suche nach Maven Central.
Sehen Sie sich den Javadoc an.
Weitere Dokumentationen für die enthaltenen Webdienste finden Sie unter https://developers.google.com/maps/.
In diesem Beispiel wird die geokodierende API mit einem API -Schlüssel verwendet:
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 ();
Hinweis: Der GeoApiContext
ist als Singleton in Ihrer Anwendung ausgelegt. Bitte instanziieren Sie eine beim Antragsstart und verwenden Sie es weiterhin für die Lebensdauer Ihrer Bewerbung. Dies ermöglicht die ordnungsgemäße QPS -Durchsetzung in allen Ihren Anfragen.
Rufen Sie am Ende der Ausführung die shutdown()
-Methode von GeoApiContext
auf, da der Thread im Speicher instanziiert bleibt.
Weitere Nutzungsbeispiele finden Sie in den Tests.
Um die Google App Engine mit dieser Client -Bibliothek zu verwenden, fügen Sie Ihrem build.gradle
die neueste App Engine -Abhängigkeit hinzu. Gradle -Datei:
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
Sie können diese Client -Bibliothek in der Google App Engine mit der folgenden Codeänderung verwenden:
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
Das new GaeRequestHandler.Builder()
an GeoApiContext.Builder
requestHandlerBuilder
teilt dem Java -Client für Google Maps -Dienste mit, um die entsprechenden Aufforderungen zur Erstellung von HTTP -Anforderungen von Google App Engine anstelle der standardmäßigen OKHTTP3 -Strategie zu verwenden.
Schlafen Sie nie wieder zwischen Anfragen! Standardmäßig werden Anfragen mit den erwarteten Ratenlimits für jeden Webdienst gesendet, in der Regel 50 Abfragen pro Sekunde für kostenlose Benutzer. Wenn Sie Anfragen beschleunigen oder verlangsamen möchten, können Sie dies auch mit new GeoApiContext.Builder().queryRateLimit(qps).build()
verwenden. Beachten Sie, dass Sie die Verzögerung zwischen der anfänglichen Anforderung und aufeinanderfolgenden Seiten immer noch manuell verarbeiten müssen, wenn Sie mehrere Ergebnissätze durchlaufen.
Automatisch wiederholen, wenn intermittierende Fehler auftreten. Das heißt, wenn einer der übertragbaren 5xx -Fehler von der API zurückgegeben wird.
Um automatische Wiederholungen zu ändern oder zu deaktivieren, siehe diese Methoden in GeoApiContext
:
.disableRetries()
.maxRetries()
.retryTimeout()
.setIfExceptionIsAllowedToRetry()
Native Objekte für jede der API -Antworten.
Alle Anfragen unterstützen synchrone oder asynchrone Anrufstil.
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.
}
});
Notiz
Sie benötigen einen API -Schlüssel, um die Tests durchzuführen.
# Compile and package the project
$ ./gradlew jar
# Run the tests
$ ./gradlew test
Diese Bibliothek verwendet Google Maps Platform Services. Die Verwendung von Google Maps -Plattformdiensten über diese Bibliothek unterliegt den Nutzungsbedingungen für Google Maps -Plattform.
Diese Bibliothek ist kein Google Maps -Plattform -Kerndienst. Daher gelten die Nutzungsbedingungen der Google Maps -Plattform (z. B. technische Support -Services, Service -Level -Vereinbarungen und Abschreibungsrichtlinien) nicht für den Code in dieser Bibliothek.
Diese Bibliothek wird über eine Open -Source -Lizenz angeboten. Es wird nicht den Richtlinien für die Google Maps -Plattform -Support -Support -Support -Dienste, der SLA oder der Abschreibungsrichtlinie unterliegt (alle von der Bibliothek verwendeten Google Maps -Plattformdienste bleiben jedoch den Nutzungsbedingungen der Google Maps -Plattform unterliegen).
Diese Bibliothek hält sich an die semantische Versionierung, um anzuzeigen, wann rückwärts-inkompatible Änderungen eingeführt werden. Während sich die Bibliothek in Version 0.x befindet, können jederzeit nach hinten kompatible Änderungen eingeführt werden.
Wenn Sie einen Fehler finden oder eine Funktionsanforderung haben, stellen Sie bitte ein Problem auf GitHub ein. Wenn Sie Antworten auf technische Fragen von anderen Entwicklern der Google Maps -Plattform erhalten möchten, stellen Sie einen unserer Entwickler -Community -Kanäle. Wenn Sie einen Beitrag leisten möchten, überprüfen Sie bitte den Beitragshandbuch im GitHub -Repository.