提示
如果您正在尋找以下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存儲庫中的貢獻指南。