เคล็ดลับ
หากคุณกำลังมองหาไลบรารีไคลเอนต์ Java สำหรับ API ต่อไปนี้ดู API แพลตฟอร์ม Google Maps ในคลาวด์ไคลเอนต์ไลบรารีสำหรับ Java (รุ่น)
API ใหม่จะไม่ถูกเพิ่มในไลบรารีไคลเอนต์นี้
ใช้ Java? ต้องการ geocode บางสิ่งบางอย่าง? กำลังมองหาเส้นทาง? อาจจะเป็นเมทริกซ์ของเส้นทาง? ห้องสมุดนี้นำบริการเว็บ Google Maps API ไปยังแอปพลิเคชัน Java ฝั่งเซิร์ฟเวอร์ของคุณ
ไคลเอนต์ Java สำหรับ Google Maps Services เป็นไลบรารีไคลเอนต์ Java สำหรับ Google Maps APIs ต่อไปนี้:
ไคลเอนต์ Java สำหรับ Google Maps Services ได้รับการออกแบบมาเพื่อใช้ในแอพพลิเคชั่นทั้งเซิร์ฟเวอร์และ Android ไม่ว่าในกรณีใดสิ่งสำคัญคือการเพิ่มข้อ จำกัด คีย์ API เพื่อปรับปรุงความปลอดภัยของคีย์ API ของคุณ ควรใช้มาตรการรักษาความปลอดภัยเพิ่มเติมเช่นการซ่อนคีย์ของคุณจากการควบคุมเวอร์ชันเพื่อปรับปรุงความปลอดภัยของคีย์ API ของคุณต่อไป
คุณสามารถอ้างถึงแนวทางปฏิบัติที่ดีที่สุดของ API Security เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับหัวข้อนี้
บันทึก
หากคุณใช้ไลบรารีนี้บน Android ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณใช้งานอย่างน้อย 0.19.0 ของไลบรารีนี้เพื่อให้สามารถบังคับใช้ข้อ จำกัด คีย์ API ได้
คุณสามารถเพิ่มไลบรารีลงในโครงการของคุณผ่าน Maven หรือ Gradle
บันทึก
ตั้งแต่ 0.1.18 ตอนนี้มีการพึ่งพา SLF4J คุณต้องเพิ่มหนึ่งในการพึ่งพาอะแดปเตอร์ที่เหมาะสมสำหรับการตั้งค่าการบันทึกของคุณ ในตัวอย่างการกำหนดค่าด้านล่างเรากำลังรวม SLF4J-NOP แต่มีคนอื่น ๆ เช่น SLF4J-LOG4J12 และ SLF4J-JDK14 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 '
}
คุณสามารถค้นหาเวอร์ชันล่าสุดได้ที่ด้านบนของ readme นี้หรือโดยการค้นหา Maven Central
ดู Javadoc
เอกสารเพิ่มเติมสำหรับบริการเว็บที่รวมอยู่มีอยู่ที่ https://developers.google.com/maps/
ตัวอย่างนี้ใช้ GEOCODING 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 ที่เหมาะสมในคำขอทั้งหมดของคุณ
ในตอนท้ายของการดำเนินการให้เรียกใช้วิธี shutdown()
ของ GeoApiContext
ไม่เช่นนั้นเธรดจะยังคงอยู่ในอินสแตนซ์ในหน่วยความจำ
สำหรับตัวอย่างการใช้งานเพิ่มเติมลองดูการทดสอบ
หากต้องการใช้ Google App Engine กับไลบรารีไคล build.gradle
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
จากนั้นคุณสามารถใช้ไลบรารีไคลเอน
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
อาร์กิวเมนต์ new GaeRequestHandler.Builder()
ไปยัง GeoApiContext.Builder
ของ Builder requestHandlerBuilder
บอกไคลเอนต์ Java สำหรับบริการ Google Maps เพื่อใช้การโทรที่เหมาะสมสำหรับการร้องขอ HTTP จาก Google App Engine แทนกลยุทธ์ที่ใช้ OKHTTTP3 เริ่มต้น
อย่านอนระหว่างคำขออีกต่อไป! โดยค่าเริ่มต้นคำขอจะถูกส่งที่ขีด จำกัด อัตราที่คาดหวังสำหรับแต่ละบริการเว็บโดยทั่วไปจะมีการสืบค้น 50 ครั้งต่อวินาทีสำหรับผู้ใช้ฟรี หากคุณต้องการเพิ่มความเร็วหรือช้าลงคำขอคุณสามารถทำได้เช่นกันโดยใช้ new GeoApiContext.Builder().queryRateLimit(qps).build()
โปรดทราบว่าคุณยังต้องจัดการความล่าช้าระหว่างคำขอเริ่มต้นและหน้าต่อเนื่องเมื่อคุณเพจผ่านชุดผลลัพธ์หลายชุด
ลองใหม่โดยอัตโนมัติเมื่อเกิดความล้มเหลวเป็นระยะ ๆ นั่นคือเมื่อข้อผิดพลาด 5xx ใด ๆ กลับมาจาก API
หากต้องการเปลี่ยนแปลงหรือปิดการใช้งานการลองใหม่โดยอัตโนมัติดูวิธีการเหล่านี้ใน 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 Maps (เช่นบริการสนับสนุนด้านเทคนิคข้อตกลงระดับบริการและนโยบายการเสื่อมราคา) ไม่ได้ใช้กับรหัสในห้องสมุดนี้
ห้องสมุดนี้มีให้ผ่านใบอนุญาตโอเพ่นซอร์ส มันไม่ได้อยู่ภายใต้การควบคุมโดยแนวทางการสนับสนุนทางเทคนิคของแพลตฟอร์ม Google Maps, SLA หรือนโยบายการคัดค้าน (อย่างไรก็ตามบริการแพลตฟอร์ม Google Maps ใด ๆ ที่ห้องสมุดที่ใช้นั้นยังคงอยู่ภายใต้ข้อกำหนดในการให้บริการแพลตฟอร์ม Google Maps)
ห้องสมุดนี้ยึดติดกับการกำหนดเวอร์ชันความหมายเพื่อระบุว่ามีการแนะนำการเปลี่ยนแปลงที่ไม่เข้ากันย้อนหลังเมื่อใด ดังนั้นในขณะที่ไลบรารีอยู่ในรุ่น 0.x การเปลี่ยนแปลงที่เข้ากันไม่ได้อาจมีการเปลี่ยนแปลงได้ตลอดเวลา
หากคุณพบข้อผิดพลาดหรือมีคำขอคุณสมบัติโปรดยื่นปัญหาเกี่ยวกับ GitHub หากคุณต้องการรับคำตอบสำหรับคำถามทางเทคนิคจากนักพัฒนาแพลตฟอร์ม Google Maps อื่น ๆ ให้ถามผ่านช่องทางชุมชนนักพัฒนาของเรา หากคุณต้องการมีส่วนร่วมโปรดตรวจสอบคู่มือการสนับสนุนในที่เก็บ GitHub