نصيحة
إذا كنت تبحث عن مكتبات عملاء Java لبرامج واجهات برمجة التطبيقات التالية ، راجع واجهات برمجة تطبيقات منصة Google Maps في مكتبات العملاء السحابية لـ Java (الإصدارات).
لن تتم إضافة واجهات برمجة التطبيقات الجديدة إلى مكتبة العميل هذه.
استخدم جافا؟ تريد أن ترمز إلى شيء جغرافي؟ تبحث عن الاتجاهات؟ ربما مصفوفات الاتجاهات؟ تقدم هذه المكتبة خدمات ويب Google Maps API إلى تطبيق Java من جانب الخادم.
عميل Java لـ Google Maps Services عبارة عن مكتبة عميل Java لواجهة برمجة تطبيقات Google Maps التالية:
تم تصميم عميل Java لـ Google Maps Services للاستخدام في كل من تطبيقات Server و 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 '
}
يمكنك العثور على أحدث إصدار في الجزء العلوي من هذا ReadMe أو عن طريق البحث في Maven Central.
عرض Javadoc.
تتوفر وثائق إضافية لخدمات الويب المضمنة على https://developers.google.com/maps/.
يستخدم هذا المثال واجهة برمجة تطبيقات الترميز الجغرافي مع مفتاح 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 مع مكتبة العميل هذه ، أضف أحدث اعتماد محرك التطبيق إلى ملف build.gradle
:
dependencies {
implementation ' com.google.appengine:appengine-api-1.0-sdk:<latest version> '
}
يمكنك بعد ذلك استخدام مكتبة العميل هذه على محرك تطبيق Google مع تغيير الكود التالي:
new GeoApiContext . Builder ( new GaeRequestHandler . Builder ())
. apiKey ( "AIza..." )
. build ();
يخبر new GaeRequestHandler.Builder()
لـ GeoApiContext.Builder
requestHandlerBuilder
عميل Java لـ Google Maps Services لاستخدام المكالمات المناسبة لاتخاذ طلبات HTTP من محرك تطبيق Google ، بدلاً من الاستراتيجية الافتراضية لـ OKHTTP3.
لا تنام أبدًا بين الطلبات مرة أخرى! افتراضيًا ، يتم إرسال الطلبات بحدود المعدل المتوقعة لكل خدمة ويب ، وعادة ما تكون 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. يخضع استخدام خدمات منصة خرائط Google من خلال هذه المكتبة لشروط خدمة منصة Google Maps.
هذه المكتبة ليست خدمة منصة Google Maps الأساسية. لذلك ، لا تنطبق شروط خدمة منصة Google Maps (مثل خدمات الدعم الفني ، واتفاقيات مستوى الخدمة ، وسياسة الإهمال) على الرمز في هذه المكتبة.
يتم تقديم هذه المكتبة عبر ترخيص مفتوح المصدر. لا يحكمها إرشادات خدمات الدعم الفني لدعم منصة Google MAPS ، أو SLA ، أو سياسة الإهمال (ومع ذلك ، تظل أي خدمات منصة Google Maps التي تستخدمها المكتبة خاضعة لشروط منصة Google Maps).
تلتزم هذه المكتبة بالإصدار الدلالي للإشارة إلى متى يتم تقديم التغييرات المتوافقة مع الخلف. وفقًا لذلك ، في حين أن المكتبة في الإصدار 0.x ، قد يتم تقديم تغييرات متوافقة مع الوراء في أي وقت.
إذا وجدت خطأ ، أو لديك طلب ميزة ، فيرجى تقديم مشكلة على Github. إذا كنت ترغب في الحصول على إجابات على الأسئلة الفنية من مطوري منصات Google Maps الآخرين ، اسأل من خلال إحدى قنوات مجتمع المطورين لدينا. إذا كنت ترغب في المساهمة ، فيرجى التحقق من دليل المساهمة في مستودع GitHub.