Dica
Se você estiver procurando por bibliotecas de clientes Java para as seguintes APIs, consulte as APIs da plataforma do Google Maps nas bibliotecas de clientes em nuvem para Java (lançamentos).
As novas APIs não serão adicionadas a esta biblioteca de clientes.
Use Java? Quer geocodificar alguma coisa? Procurando instruções? Talvez matrizes de direções? Esta biblioteca traz os serviços da Web da API do Google Maps para o seu aplicativo Java do lado do servidor.
O cliente Java do Google Maps Services é uma biblioteca de clientes Java para as seguintes APIs do Google Maps:
O cliente Java do Google Maps Services foi projetado para uso em aplicativos de servidor e Android. Em ambos os casos, é importante adicionar restrições de chave da API para melhorar a segurança da sua chave da API. Medidas de segurança adicionais, como ocultar sua chave do controle da versão, também devem ser implementadas para melhorar ainda mais a segurança da sua chave da API.
Você pode se referir às melhores práticas de segurança da API para saber mais sobre esse tópico.
Observação
Se você estiver usando esta biblioteca no Android, verifique se o seu aplicativo está usando pelo menos a versão 0.19.0 desta biblioteca para que as restrições de chave da API possam ser aplicadas.
Você pode adicionar a biblioteca ao seu projeto via Maven ou Gradle.
Observação
Como 0,1.18 agora há uma dependência do SLF4J. Você precisa adicionar uma das dependências do adaptador que faz sentido para sua configuração de log. Nas amostras de configuração abaixo, estamos integrando o SLF4J-NOP, mas há outros como SLF4J-LOG4J12 e SLF4J-JDK14 que farão mais sentido em outras configurações. Isso impedirá que uma mensagem de aviso seja emitida quando você começar 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 '
}
Você pode encontrar a versão mais recente na parte superior deste ReadMe ou pesquisando o Maven Central.
Veja o javadoc.
A documentação adicional para os Serviços da Web incluída está disponível em https://developers.google.com/maps/.
Este exemplo usa a API de geocodificação com uma chave da 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: O GeoApiContext
foi projetado para ser um singleton em seu aplicativo. Instancie um na inicialização do aplicativo e continue a usá -lo para a vida útil do seu aplicativo. Isso permitirá a aplicação adequada do QPS em todas as suas solicitações.
No final da execução, ligue para o método shutdown()
de GeoApiContext
, caso contrário, o thread permanecerá instanciado na memória.
Para obter mais exemplos de uso, consulte os testes.
Para usar o Google App Engine com esta biblioteca de clientes, adicione a mais recente dependência do mecanismo de aplicativos ao seu arquivo build.gradle
:
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
Você pode usar esta biblioteca de clientes no Google App Engine com a seguinte mudança de código:
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
O new GaeRequestHandler.Builder()
para o requestHandlerBuilder
do GeoApiContext.Builder
disse ao cliente Java para serviços do Google Maps para utilizar as chamadas apropriadas para fazer solicitações HTTP do Google App Engine, em vez da estratégia baseada em OKHTTP3 padrão.
Nunca mais durma entre os pedidos! Por padrão, as solicitações são enviadas nos limites de taxa esperados para cada serviço da Web, normalmente 50 consultas por segundo para usuários gratuitos. Se você deseja acelerar ou desacelerar solicitações, também pode fazer isso, usando new GeoApiContext.Builder().queryRateLimit(qps).build()
. Observe que você ainda precisa lidar manualmente o atraso entre a solicitação inicial e as páginas sucessivas quando estiver pagando por vários conjuntos de resultados.
Represente automaticamente quando ocorrem falhas intermitentes. Ou seja, quando qualquer um dos erros de Recuxer 5xx é retornado da API.
Para alterar ou desativar tentativas automáticas, consulte Estes métodos no GeoApiContext
:
.disableRetries()
.maxRetries()
.retryTimeout()
.setIfExceptionIsAllowedToRetry()
Objetos nativos para cada uma das respostas da API.
Todas as solicitações oferecem suporte ao estilo de chamada síncrona ou assíncrona.
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.
}
});
Observação
Você precisará de uma chave da API para executar os testes.
# Compile and package the project
$ ./gradlew jar
# Run the tests
$ ./gradlew test
Esta biblioteca usa serviços de plataforma do Google Maps. O uso dos serviços de plataforma do Google Maps através desta biblioteca está sujeito aos termos de serviço do Google Maps Platform.
Esta biblioteca não é um serviço principal da plataforma do Google Maps. Portanto, os termos de serviço da plataforma do Google Maps (por exemplo, serviços de suporte técnico, acordos de nível de serviço e política de depreciação) não se aplicam ao código nesta biblioteca.
Esta biblioteca é oferecida por meio de uma licença de código aberto. Não é governado pelas diretrizes de serviços de suporte técnico de suporte técnico do Google Maps, o SLA ou a política de depreciação (no entanto, quaisquer serviços de plataforma do Google Maps usados pela biblioteca permanecem sujeitos aos termos de serviço da plataforma do Google Maps).
Essa biblioteca adere ao versão semântica para indicar quando as alterações incompatíveis com as costas são introduzidas. Consequentemente, enquanto a biblioteca está na versão 0.x, as alterações incompatíveis com as costas podem ser introduzidas a qualquer momento.
Se você encontrar um bug ou tiver uma solicitação de recurso, registre um problema no GitHub. Se você deseja obter respostas para perguntas técnicas de outros desenvolvedores de plataformas do Google Maps, pergunte por meio de um de nossos canais comunitários de desenvolvedores. Se você quiser contribuir, verifique o guia contribuinte no repositório do GitHub.