بشكل تلقائي، تتعامل واجهة برمجة التطبيقات مع النقاط الوسيطة على المسار كمحطات توقّف على طول المسار.
ومع ذلك، يمكنك ضبط نقطة على المسار وسيطة كنقطة على المسار via
للمرور تعبر من خلالها المركبة بدون توقف.
استخدِم نقاط المسار العابرة لتشكيل مسار معيّن أو تعديله. بدلاً من تقسيم المسار إلى محطات منفصلة لاستلام الطلب أو مغادرة المسار، تفرض نقطة على المسار العابرة على محرّك التوجيه المرور عبر موقع جغرافي معيّن في الطريق إلى الوجهة، على سبيل المثال، لاتباع قطاع طريق مفضّل أو تجنُّب خطر معروف.
يحتوي المسار الذي يتضمّن نقطة انطلاق ونقطة واحدة أو أكثر من النقاط على المسار التي يتم المرور بها ووجهة على جزء مسار واحد فقط يربط نقطة الانطلاق بالوجهة مباشرةً.
لضبط نقطة على المسار وسيطة كنقطة عبور، اضبط السمة via للنقطة على المسار على true في مورد Waypoint في REST أو رسالة Waypoint في gRPC.
على الرغم من أنّ Routes API تقبل العناوين وأرقام تعريف الأماكن وإحداثيات خطوط العرض والطول، توفّر إحداثيات خطوط العرض والطول، أو latLng، تعديلات المسار الأكثر دقة للنقاط على المسار التي يتم المرور بها.
تكون السمة via أكثر فعالية عند إنشاء مسارات استجابةً لسحب النقاط على المسار على الخريطة. يتيح لك هذا النهج معرفة كيف يبدو المسار النهائي في الوقت الفعلي ويساعدك في وضع نقاط على المسار في مواقع يسهل الوصول إليها.
مثال: ضبط نقطة على المسار للمرور بها
يوضّح المثال التالي كيفية ضبط "via": true على نقطة على المسار
متوسطة في طلب POST كامل من النوع computeRoutes:
curl -X POST -d '{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, "intermediates": [ { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true } ], "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
استخدام العناوين أو أرقام تعريف الأماكن كنقاط على المسار
على الرغم من أنّنا ننصح باستخدام إحداثيات خطوط العرض وخطوط الطول لتحديد مسار دقيق، يمكنك أيضًا تحديد نقاط وسيطة على المسار باستخدام سلسلة عناوين أو رقم تعريف مكان.
عند استخدام عنوان أو رقم تعريف مكان لنقطة على المسار، تعمل واجهة برمجة التطبيقات على استيفاء الموقع الجغرافي وتثبيته على أقرب طريق يمكن التنقّل فيه. قد تؤدي عملية المحاذاة مع الطرق هذه أحيانًا إلى اختلافات أو عدم دقة في المسار مقارنةً بالإحداثيات الدقيقة.
إذا حدّدت نقطة على المسار باستخدام سلسلة عنوان أو رمز Plus Code، ستعمل واجهة برمجة التطبيقات على ترميز الموقع الجغرافي جغرافيًا وعرض رقم تعريف المكان المطابق في مصفوفة geocodingResults.intermediates في الاستجابة.
لكل عنصر في مصفوفة intermediates، استخدِم السمة intermediateWaypointRequestIndex لتحديد النقطة الوسيطة على المسار في الطلب التي تتوافق مع رقم تعريف المكان في الاستجابة.
مثال: طلب أرقام تعريف الأماكن لنقاط المسار العابرة
يوضّح المثال التالي طلبًا يتضمّن ثلاث نقاط وسيطة على المسار، يحدّد كلّ منها "via": true:
curl -X POST -d '{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "24 Willie Mays Plaza, San Francisco, CA 94107" }, "intermediates": [ { "address": "450 Serra Mall, Stanford, CA 94305, USA", "via": true }, { "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0807784 } }, "via": true }, { "address": "1836 El Camino Real, Redwood City, CA 94063", "via": true } ], "travelMode": "DRIVE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \ 'https://routes.googleapis.com/directions/v2:computeRoutes'
يتضمّن الردّ مصفوفة geocodingResults التي تحتوي على أرقام تعريف الأماكن
لنقطة الانطلاق والوجهة والنقطتَين الوسيطتَين على المسار اللتين حدّدتهما
حسب العنوان في فهرس الطلب 0 والفهرس 2. تتجاهل واجهة برمجة التطبيقات النقطة على المسار
الوسيطة في الفهرس 1 من geocodingResults لأنّك حدّدتها باستخدام
إحداثيات خطوط العرض والطول:
{ "routes": [ { "distanceMeters": 54200, "duration": "2400s", "legs": [ { "distanceMeters": 54200, "duration": "2400s", "startLocation": { "latLng": { "latitude": 37.4220, "longitude": -122.0841 } }, "endLocation": { "latLng": { "latitude": 37.7786, "longitude": -122.3893 } } } ] } ], "geocodingResults": { "origin": { "geocoderStatus": {}, "type": [ "premise" ], "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g" }, "destination": { "geocoderStatus": {}, "type": [ "premise" ], "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY" }, "intermediates": [ { "geocoderStatus": {}, "intermediateWaypointRequestIndex": 0, "type": [ "street_address" ], "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y" }, { "geocoderStatus": {}, "intermediateWaypointRequestIndex": 2, "type": [ "premise" ], "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0" } ] } }