هذه المكتبة عبارة عن نسخة مُعاد تصنيعها من إصدار سابق تم نشره على @google/maps. ويتم الآن نشره على @googlemaps/google-maps-services-js.
هل تستخدم Node.js؟ هل تريد ترميز شيء ما جغرافيًا؟ تبحث عن الاتجاهات؟ تقوم هذه المكتبة بإحضار خدمات الويب الخاصة بـ Google Maps API إلى تطبيق Node.js الخاص بك.
يعد عميل Node.js لخدمات خرائط Google بمثابة مكتبة عميل Node.js لواجهات برمجة تطبيقات خرائط Google التالية:
ضع في اعتبارك أن نفس الشروط والأحكام تنطبق على استخدام واجهات برمجة التطبيقات عند الوصول إليها من خلال هذه المكتبة.
تم تصميم هذه المكتبة لتطبيقات Node.js من جانب الخادم. محاولة استخدامه من جانب العميل، إما في المتصفح أو في أي بيئة أخرى مثل React Native، قد تنجح في بعض الحالات، لكنها لن تنجح في الغالب. يرجى الامتناع عن الإبلاغ عن المشكلات المتعلقة بهذه البيئات عند محاولة استخدامها، نظرًا لأن تطبيقات Node.js من جانب الخادم هي البيئة الوحيدة المدعومة لهذه المكتبة . بالنسبة إلى البيئات الأخرى، جرّب Maps JavaScript API، الذي يحتوي على مجموعة ميزات قابلة للمقارنة، وهو مخصص للاستخدام مع JavaScript من جانب العميل.
$ npm install @googlemaps/google-maps-services-js
فيما يلي مثال بسيط لاستدعاء طريقة الارتفاع في فئة العميل.
قم باستيراد عميل خرائط Google باستخدام وحدة TypeScript وES6:
import { Client } from "@googlemaps/google-maps-services-js" ;
بدلاً من ذلك، استخدم JavaScript دون دعم وحدة ES6:
const { Client } = require ( "@googlemaps/google-maps-services-js" ) ;
الآن قم بإنشاء مثيل للعميل لإجراء اتصال بإحدى واجهات برمجة التطبيقات.
const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
key : process . env . GOOGLE_MAPS_API_KEY ,
} ,
timeout : 1000 , // milliseconds
} )
. then ( ( r ) => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( ( e ) => {
console . log ( e . response . data . error_message ) ;
} ) ;
يمكن العثور على الوثائق المرجعية التي تم إنشاؤها هنا. أنواع TypeScript هي الوثائق الرسمية لهذه المكتبة وقد تختلف قليلاً عن الأوصاف.
من أجل تشغيل الاختبارات الشاملة، ستحتاج إلى توفير مفتاح واجهة برمجة التطبيقات (API) الخاص بك عبر متغير بيئة.
$ export GOOGLE_MAPS_API_KEY=AIza-your-api-key
$ npm test
يناقش هذا القسم الترحيل من @google/maps إلى @googlemaps/google-maps-services-js والاختلافات بين الاثنين.
ملاحظة : لا تشترك المكتبتان في أي طرق أو واجهات.
الفرق الأساسي هو أن @google/maps
يعرض طريقة عامة تأخذ المعلمات الفردية كوسيطات بينما يعرض @googlemaps/google-maps-services-js
الأساليب التي تأخذ params
headers
body
instance
(انظر Axios). يتيح ذلك الوصول المباشر إلى طبقة النقل دون التعقيد الذي كان متأصلًا في المكتبة القديمة. فيما يلي مثالان.
@google/maps
): const googleMapsClient = require ( '@google/maps' ) . createClient ( {
key : 'your API key here'
} ) ;
googleMapsClient
. elevation ( {
locations : { lat : 45 , lng : - 110 }
} )
. asPromise ( )
. then ( function ( r ) {
console . log ( r . json . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e ) ;
} ) ;
@googlemaps/google-maps-services-js
): const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
key : process . env . GOOGLE_MAPS_API_KEY
} ,
timeout : 1000 // milliseconds
} , axiosInstance )
. then ( r => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e ) ;
} ) ;
الاختلافات الأساسية موجودة في الجدول التالي.
قديم | جديد |
---|---|
يمكن أن توفر المعلمات | يمكن توفير المعلمات والرؤوس والمثيلات والمهلة (راجع تكوين طلب Axios) |
تم تكوين مفتاح API في العميل | تم تكوين مفتاح API لكل طريقة في كائن المعلمات |
إعادة المحاولة مدعومة | إعادة المحاولة قابلة للتكوين عبر إعادة المحاولة axios أو إعادة المحاولة axios |
لا يستخدم الوعود بشكل افتراضي | الوعود افتراضية |
الكتابة موجودة في @types/googlemaps | يتم تضمين الكتابة |
لا يدعم البقاء على قيد الحياة | يدعم البقاء على قيد الحياة |
لا يدعم المعترضات | يدعم المعترضات |
لا يدعم الإلغاء | يدعم الإلغاء |
يتم توفير المصادقة عبر معرف العميل وسر توقيع عنوان URL لدعم التطبيقات القديمة التي تستخدم الخطة المميزة لـ Google Maps Platform. لم تعد الخطة المميزة لـ Google Maps Platform متاحة للعملاء المسجلين أو الجدد. يجب أن تستخدم جميع التطبيقات الجديدة مفاتيح API.
const client = new Client ( { } ) ;
client
. elevation ( {
params : {
locations : [ { lat : 45 , lng : - 110 } ] ,
client_id : process . env . GOOGLE_MAPS_CLIENT_ID ,
client_secret : process . env . GOOGLE_MAPS_CLIENT_SECRET
} ,
timeout : 1000 // milliseconds
} )
. then ( r => {
console . log ( r . data . results [ 0 ] . elevation ) ;
} )
. catch ( e => {
console . log ( e . response . data . error_message ) ;
} ) ;
هذه المكتبة مدعومة من المجتمع. نحن مرتاحون بما فيه الكفاية لاستقرار المكتبة وميزاتها ونريد منك إنشاء تطبيقات إنتاج حقيقية عليها. سنحاول، من خلال Stack Overflow، دعم السطح العام للمكتبة والحفاظ على التوافق مع الإصدارات السابقة في المستقبل؛ ومع ذلك، أثناء وجود المكتبة في الإصدار 0.x، فإننا نحتفظ بالحق في إجراء تغييرات غير متوافقة مع الإصدارات السابقة. إذا قمنا بإزالة بعض الوظائف (عادةً بسبب وجود وظائف أفضل أو إذا ثبت أن الميزة غير مجدية)، فهدفنا هو إيقاف العمل ومنح المطورين عامًا لتحديث التعليمات البرمجية الخاصة بهم.
إذا وجدت خطأ، أو كان لديك اقتراح ميزة، يرجى تسجيل مشكلة. إذا كنت ترغب في المساهمة، يرجى قراءة كيفية المساهمة.