توفّر حزمة تطوير البرامج للتنقّل على أجهزة Android طرقًا محسّنة لتحديد نقاط المرور أو نقاط التنقّل، ما يتيح توجيهًا أكثر دقة وتجربة وصول أفضل، خاصةً إلى الوجهات التي تتضمّن مداخل متعدّدة أو نقاط تنقّل محدّدة. يمكنك توجيه المستخدمين إلى مواقع جغرافية دقيقة باستخدام navigationPointToken، وهو سلسلة ترمّز موقعًا جغرافيًا وسياقًا إضافيًا للمسار. يمكنك أيضًا دمج إحداثيات خط العرض وخط الطول مع رقم تعريف المكان للحصول على سياق إضافي.
خلفية
قبل الإصدار 7.4، كان بإمكانك تحديد Waypoint باستخدام إحداثيات خط العرض وخط الطول أو رقم تعريف المكان. على الرغم من أنّ التوجيه إلى خطوط الطول والعرض قد يكون فعّالاً في بعض الأحيان، إلا أنّه قد يؤدي أحيانًا إلى تحديد نقاط غير مثالية للاستلام أو التسليم، خاصةً في الأماكن الكبيرة أو الحدائق أو المباني التي تتضمّن عدة مداخل. قد يتم ضبط النتيجة على أقرب جزء من الطريق، ما قد لا يكون نقطة التنقّل الأنسب أو الأصح.
تعالج خيارات نقاط الطريق المحسّنة هذه المشكلة من خلال السماح بتقديم المزيد من السياق.
استخدام رمز مميّز لنقطة التنقّل
للحصول على توجيه أكثر دقة إلى نقاط تنقّل معيّنة، مثل المداخل أو أرصفة التحميل أو مناطق الاستلام المحدّدة، يمكنك استخدام navigationPointToken. يتم الحصول على هذا الرمز المميّز من خلال استدعاء طريقة الوجهات
في واجهة برمجة التطبيقات Geocoding. تمثّل هذه السمة نقطة تنقّل محدّدة يمكن توجيه المستخدمين إليها، وهي مرتبطة بمكان.
لتحديد رمز مميّز لنقطة التنقّل، اتّبِع الخطوات التالية:
- احصل على
navigationPointTokenمن طريقة Destinations في Geocoding API ردّ. - أنشئ
Waypointباستخدام طريقةsetNavigationPointToken()في أداة الإنشاء.
ملاحظة: عند استخدام setNavigationPointToken()، لا يمكنك استخدام setLatLng() أو setPlaceIdString() في الوقت نفسه. لا يمكن استخدام هذه الطرق مع setNavigationPointToken().
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
استخدام رموز مميّزة لنقاط التنقّل ورموز مميّزة للمسار
يمكنك استرداد رمز مميّز لنقطة التنقّل من خلال Geocoding API، واسترداد رمز مميّز للمسار من خلال Routes API، ثم تمرير كل من الرمز المميّز لنقطة التنقّل والرمز المميّز للمسار إلى Navigation SDK. يكون هذا الخيار مفيدًا في سيناريوهات مثل مشاركة الرحلات أو خدمات التوصيل، حيث تستخدم واجهة Routes API لاحتساب سعر الرحلة، وتريد الحصول على دقة رمز مميّز لنقطة التنقّل.
يؤثر رمز المسار في المسار الذي تختاره حزمة تطوير البرامج Navigation SDK، إذ يرجّح المسار الذي تم استخدامه لتحديد السعر. يحدّ ذلك من خطر استخدام طرق أطول أو أقصر للرحلة، ما قد يؤدي إلى حدوث "تغيّرات مفاجئة في الأسعار".
راجِع مستندات Routes API للحصول على مزيد من المعلومات حول تحديد موقع جغرافي باستخدام رمز مميّز لنقطة التنقّل وإنشاء رمز مميّز للمسار. اطّلِع على مقالة "تخطيط مسار" للتعرّف على كيفية تخطيط مسار باستخدام رمز مميّز للمسار.
يوضّح هذا الرسم البياني كيف يمكن لتطبيق مشاركة الرحلات أو توصيل الطلبات استخدام رموز مميّزة لنقاط التنقّل ورموز مميّزة للمسار معًا:
الجمع بين رقم تعريف المكان وخط العرض وخط الطول
بدءًا من الإصدار 7.4، يمكنك تقديم كل من رقم تعريف المكان وإحداثيات خطوط الطول والعرض عند إنشاء Waypoint. تكون هذه الطريقة مفيدة عندما تريد تحديد نقطة دقيقة (خط العرض/خط الطول) مع الاستمرار في توفير سياق المكان العام (رقم تعريف المكان). يتيح ذلك لحزمة تطوير البرامج (SDK) الخاصة بخدمة Navigation تقديم تجربة وصول أكثر ثراءً من خلال تمييز مبنى الوجهة أو عرض نقاط الاهتمام القريبة ذات الصلة برقم تعريف المكان.
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
الاعتبارات
عند تقديم كل من placeId وlatlng:
- يستهدف المسار في المقام الأول
latlngالمحدّد. - يتم استخدام
placeIdكسياق لتحسين تجربة الوصول. - الخيار الاحتياطي: إذا رصدت حزمة SDK أنّ
placeIdالمقدَّمة تتوافق مع ميزة بعيدة جدًا عنlatlngالمحدَّدة، سيتم تجاهلplaceId. في هذا السيناريو، سيتم توجيهك إلىlatlngفقط، ولن تتوفّر تحسينات تجربة الوصول الخاصة بالمكان.
ملخّص لإعدادات نقاط الطريق الصالحة
| الطريقة | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
أسلوب التوجيه | تمييز الوجهة |
|---|---|---|---|---|---|
| إحداثيات خطوط الطول والعرض فقط | محدّدة | غياب | غياب | المسارات إلى جزء الطريق الأقرب إلى الإحداثيات المحدّدة | يتم عرضها إذا كان من الممكن استنتاج الوجهة بدقة عالية |
| رقم تعريف المكان فقط | غياب | محدّدة | غياب | المسارات إلى نقطة التنقّل التلقائية لرقم تعريف المكان | رقم تعريف مكان الانطلاق |
| رمز مميّز لنقطة التنقّل فقط | غياب | غياب | محدّدة | المسارات المؤدية إلى نقطة التنقل الدقيقة الممثّلة بالرمز المميّز | من الوجهة المحدّدة في طلب طريقة الوجهات في Geocoding API الأصلية |
| إحداثيات خط العرض/خط الطول ورقم تعريف المكان معًا | محدّدة | محدّدة | غياب | المسارات إلى جزء الطريق الأقرب إلى الإحداثيات المحدّدة | من رقم تعريف المكان، على الرغم من أنّه لا يظهر إذا كان رقم تعريف المكان بعيدًا جدًا عن إحداثيات خطوط الطول والعرض |