اختيار المعلومات التي سيتم عرضها
عند استدعاء طريقة لحساب مصفوفة مسار أو مسار، يجب عليك تحديد المعلومات التي تريدها عن طريق سرد الحقول المراد عرضها في الاستجابة. لا تتوفّر قائمة تلقائية للحقول التي تم إرجاعها. في حال حذف هذه القائمة، ستعرض الطرق خطأ.
يمكنك تحديد قائمة الحقول من خلال إنشاء قناع حقل استجابة. بعد ذلك، يمكنك تمرير
قناع حقل الاستجابة إلى أي من الطريقتَين باستخدام مَعلمة عنوان URL $fields
أو
fields
، أو باستخدام عنوان HTTP أو gRPC X-Goog-FieldMask
.
يُعدّ استخدام قناع حقل ممارسة تصميم جيدة لضمان عدم طلب بيانات غير ضرورية، ما يساعد بدوره في تجنُّب وقت المعالجة غير الضروري والرسوم التي يتم تحصيلها.
لمزيد من المعلومات عن مَعلمات عناوين URL، اطّلِع على مَعلمات النظام.
تحديد قناع حقل ردّ
قناع حقل الاستجابة هو قائمة من المسارات مفصولة بفواصل، حيث يُحدِّد كل مسار حقلاً فريدًا في رسالة الاستجابة. يبدأ المسار من رسالة الاستجابة ذات المستوى الأعلى ويستخدم مسارًا مفصولاً بنقاط إلى الحقل المحدّد.
أنشئ مسار حقل وحدِّده على النحو التالي:
- ابحث عن الحقول التي تحتوي على المعلومات التي تحتاجها من Routes API. لمعرفة التفاصيل، يُرجى الاطّلاع على مراجع الحقول.
- تحديد مسارات الحقول التي تحتاج إليها وإنشاء أقنعة حقول لها: لمعرفة التفاصيل، يُرجى الاطّلاع على تحديد قناع الحقل الذي تريد استخدامه.
ادمج أقنعة الحقول لجميع الحقول التي تحتاج إليها، مع الفصل بين أقنعة الحقول بفواصل. على سبيل المثال، لطلب
distanceMeters
لمرحلة المسار، بالإضافة إلى المدة لكل خطوة من خطوات مرحلة المسار، أدخِل كلاهما مفصولَين بفاصلة بدون أي مسافات:routes.legs.distanceMeters,routes.legs.steps.duration
أرسِل قناع الحقل مع طلب البيانات من واجهة برمجة التطبيقات. على سبيل المثال، في طلب cURL، يمكنك تحديد قناع الحقل باستخدام
-H
وX-Goog-FieldMask
:-H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
مراجع الحقول
لعرض الحقول التي يمكنك طلبها في ردّ من خلال أقنعة الحقول، راجِع مراجع Routes API المرتبطة في القائمة التالية. حدِّد الحقول بتنسيق camel case كما هو موضّح في المرجع. مثلاً: routePreference
تتضمّن هذه الإشارات الحقول المتاحة، ولكن عليك الرجوع إلى التسلسل الهرمي للحقول لتحديد مسار قناع الحقل الكامل. لمعرفة التفاصيل حول الحصول على التدرّج الهرمي للحقول، اطّلِع على تحديد قناع الحقل الذي تريد استخدامه.
- قناع حقل مسار الحساب
- توليد أقنعة حقول مصفوفة المسار
- REST: تحدّد هذه السمة حقول نص الاستجابة المطلوب عرضها.
- gRPC: يحدد حقول الكائن RouteMatrixElement في الردّ المطلوب عرضه.
تحديد أقنعة الحقول التي تريد استخدامها
إليك كيفية تحديد الحقول التي تريد استخدامها، وإنشاء أقنعة حقول لها:
- طلب جميع الحقول باستخدام قناع حقل
*
- اطّلِع على التسلسل الهرمي للحقول في الاستجابة للحقول التي تريدها.
أنشئ أقنعة الحقول باستخدام التسلسل الهرمي للحقول المعروضة في الخطوة السابقة، باستخدام التنسيق التالي:
topLevelField[.secondLevelField][.thirdLevelField][...]
على سبيل المثال، في ما يتعلّق بهذا الردّ الجزئي من مسار:
"routes": [ { "legs": [ { "steps": [ {"distanceMeters": 119}, {"distanceMeters": 41} ] } ], "distanceMeters": 160 } ]
إذا كنت تريد عرض حقل distanceMeters
فقط لمرحلة المسار، أي distanceMeters
الأخير في العيّنة السابقة، يكون قناع الحقل على النحو التالي:
routes.legs.distanceMeters
إذا أردت بدلاً من ذلك عرض حقل distanceMeters
لكل خطوة من خطوات مسار الرحلة، أي distanceMeters
ضمن steps
في العيّنة السابقة، يكون قناع الحقل على النحو التالي:
routes.legs.steps.distanceMeters
إذا أردت عرض كليهما، مع النتيجة أعلاه، يكون قناع الحقل على النحو التالي:
routes.legs.distanceMeters,routes.legs.steps.distanceMeters
أمثلة على مسارات قناع الحقل
يحتوي هذا القسم على المزيد من الأمثلة حول كيفية تحديد مسار حقل كجزء من قناع حقل استجابة في طلبات REST وgRPC.
طلب REST إلى computeRoutes
في المثال الأول، يمكنك استخدام استدعاء REST لطريقة
computeRoutes
لحساب
مسار. في هذا المثال، في العنوان، يمكنك تحديد أقنعة الحقول لعرض حقلَي المسار distanceMeters
وduration
في الاستجابة. لا تنسَ أن تبدأ اسم الحقل بـ routes
.
X-Goog-FieldMask: routes.distanceMeters,routes.duration
طلب REST إلى computeRouteMatrix
بالنسبة إلى طريقة computeRouteMatrix
REST المستخدَمة لاحتساب مصفوفة المسارات، حدِّد في العنوان عرض
originIndex
وdestinationIndex
وduration
لكلّ تركيبة من نقطة المغادرة
والوجهة:
X-Goog-FieldMask: originIndex,destinationIndex,duration
مكالمة gRPC
بالنسبة إلى gRPC، اضبط متغيّرًا يحتوي على قناع حقل الاستجابة. ويمكنك بعد ذلك تمرير هذا المتغيّر إلى الطلب.
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
اعتبارات مسار الحقل
قم بتضمين الحقول التي تحتاجها فقط في الرد لعرض الحقول التي تحتاجها فقط:
- تقليل أوقات المعالجة، وبالتالي عرض النتائج بسرعة استجابة أقل
- ضمان أداء ثابت لوقت الاستجابة إذا اخترت جميع الحقول، أو إذا اختَرت جميع الحقول في المستوى الأعلى، قد يؤدي ذلك إلى انخفاض الأداء عند إضافة حقول جديدة ثم يتم تضمينها تلقائيًا في ردّك.
- تؤدي إلى تقليل حجم الاستجابة، ما يؤدي إلى زيادة معدل نقل البيانات في الشبكة.
- ضمان عدم طلب بيانات غير ضرورية، ما يساعد في تجنّب الوقت غير الضروري الذي تستغرقه المعالجة والرسوم التي يتم تحصيلها
لمزيد من التفاصيل حول إنشاء قناع حقل، يُرجى الاطّلاع علىملف field_mask.proto.
طلب رمز مسار
لطلب أن تعرض Routes API الرموز المميّزة للمسارات للمسارات التي تم إنشاؤها، اتّبِع الخطوات التالية:
- اضبط المَعلمات التالية المطلوبة لعرض رمز مسار:
- اضبط
travelMode
علىDRIVE
. - اضبط
routingPreference
علىTRAFFIC_AWARE
أوTRAFFIC_AWARE_OPTIMAL
.
- اضبط
- تأكَّد من أنّ أيّ من نقاط الطريق ليست نقاط
via
. - حدِّد قناع الحقل
routes.routeToken
لعرض رمز مسار:X-Goog-FieldMask: routes.routeToken
يمكنك استخدام رمز مسار الرحلة المخطَّط في حزمة Navigation SDK. لمزيد من التفاصيل، يُرجى الاطّلاع على التخطيط لمسار (Android) أو التخطيط لمسار (نظام التشغيل iOS).
مثال على الرمز المميّز للمسار
في ما يلي مثال على نص طلب cURL لمسار واحد من نقطة منشأ واحدة إلى نقطة وجهة واحدة، باستخدام أقنعة الحقول لطلب رمز مسار، بالإضافة إلى مدّة المسار ومسافته وخطّه المتعدّد الأضلاع:
curl -X POST -d {"origin":{ "location": { "latLng":{ "latitude": -37.8167, "longitude": 144.9619 } } }, "destination":{ "location": { "latLng":{ "latitude":-37.8155, "longitude": 144.9663 } } }, "routingPreference":"TRAFFIC_AWARE", "travelMode":"DRIVE" } -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H X-Goog-FieldMask: routes.routeToken,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline 'https://routes.googleapis.com/directions/v2:computeRoutes'
لمزيد من التفاصيل، يُرجى الاطّلاع على مرجع Compute Routes API.