提示
如果您正在寻找以下API的Java客户端库,请参见Java云客户端库中的Google Maps Platform API(发行)。
新的API不会添加到此客户端库中。
使用Java?想要地理编码吗?寻找路线?也许是指示的矩阵?该库将Google Maps API Web服务带到您的服务器端Java应用程序。
Google Maps Services的Java客户端是以下Google Maps API的Java客户库库:
Google Maps Services的Java客户端设计用于服务器和Android应用程序。无论哪种情况,都必须添加API键限制以提高API密钥的安全性。还应采取其他安全措施,例如将密钥隐藏在版本控制中,以进一步提高API密钥的安全性。
您可以参考API安全最佳实践,以了解有关此主题的更多信息。
笔记
如果您在Android上使用此库,请确保您的应用程序至少使用此库的0.19.0版本,以便可以执行API密钥限制。
您可以通过Maven或Gradle将库添加到您的项目中。
笔记
由于0.1.18现在对SLF4J有一个依赖性。您需要添加一个适配器依赖项之一,这些依赖项对于您的记录设置很有意义。在下面的配置样本中,我们正在集成SLF4J-NOP,但是还有其他像Slf4J-Log4J12和Slf4J-JDK14这样的其他人在其他配置中会更有意义。当您开始使用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 '
}
您可以在此读数的顶部或通过搜索Maven Central找到最新版本。
查看Javadoc。
随附的Web服务的其他文档可从https://developers.google.com/maps/获得。
此示例使用API键使用地理编码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 ();
注意: GeoApiContext
设计为您的应用程序中的单身人士。请在应用程序启动中实例化一个,并继续将其用于应用程序的寿命。这将在您的所有请求中启用适当的QPS执行。
在执行结束时,调用GeoApiContext
的shutdown()
方法,否则线程将保持在内存中的实例化。
有关更多用法示例,请查看测试。
在此客户端库中使用Google App Engine,将最新的应用引擎依赖项添加到您的build.gradle
文件:
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
然后,您可以在Google App Engine上使用此客户端库,并更改以下代码:
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
GeoApiContext.Builder
的requestHandlerBuilder
的new GaeRequestHandler.Builder()
参数告诉Java客户端的Google Maps Services,以利用适当的呼叫来从Google App Engine中发布HTTP请求,而不是基于默认的OKHTTP3策略。
再也不会在要求之间睡觉!默认情况下,请求以每种Web服务的预期利率限制发送,通常每秒50个查询。如果您想加快或减慢请求的速度,也可以使用new GeoApiContext.Builder().queryRateLimit(qps).build()
。请注意,当您通过多个结果集进行分页时,您仍然需要手动处理初始请求和连续页面之间的延迟。
当发生间歇性故障时会自动重试。也就是说,当从API返回任何可检索的5xx错误时。
要更改或禁用自动检索,请在GeoApiContext
中查看这些方法:
.disableRetries()
.maxRetries()
.retryTimeout()
.setIfExceptionIsAllowedToRetry()
每个API响应的本机对象。
所有请求都支持同步或异步呼叫样式。
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.
}
});
笔记
您将需要一个API键来运行测试。
# Compile and package the project
$ ./gradlew jar
# Run the tests
$ ./gradlew test
该库使用Google Maps平台服务。通过此图书馆使用Google Maps平台服务将受到Google Maps平台服务条款的约束。
该库不是Google Maps平台核心服务。因此,Google地图平台服务条款(例如技术支持服务,服务级别协议和贬值策略)不适用于本库中的代码。
该库是通过开源许可提供的。它不受Google Maps平台支持技术支持服务指南,SLA或弃用策略的控制(但是,图书馆使用的任何Google Maps平台服务仍遵守Google Maps平台服务条款的约束)。
该库遵守语义版本,以指示何时引入向后不兼容的更改。因此,虽然库为0.x版本,但可以随时引入向后兼容的更改。
如果您找到错误或有功能请求,请在Github上提交问题。如果您想从其他Google Maps平台开发人员那里获得技术问题的答案,请通过我们的开发人员社区渠道之一询问。如果您想做出贡献,请检查GitHub存储库中的贡献指南。