بهطور پیشفرض، API با نقاطمسیر میانی بهعنوان ایستگاههای درطول مسیر رفتار میکند.
اما میتوانید نقطهمسیر میانی را بهعنوان نقطهمسیر گذری via
پیکربندی کنید که خودرو بدون توقف از آن عبور میکند.
از نقاطمسیر گذری برای شکل دادن یا تنظیم کردن مسیر خاصی استفاده کنید. بهجای تقسیم کردن مسیر به ایستگاههای سوار کردن یا پیاده کردن جداگانه، نقطهمسیر گذری موتور مسیریابی را مجبور میکند تا در مسیر رسیدن به مقصد از مکان خاصی عبور کند—برای مثال، برای دنبال کردن بخش ترجیحی جاده یا اجتناب از خطری شناختهشده.
مسیری که شامل مبدأ، یک یا چند نقطهمسیر میانی گذری، و مقصد باشد فقط شامل یک بخش مسیر است که مبدأ را مستقیماً به مقصد متصل میکند.
برای پیکربندی نقطهمسیر میانی بهعنوان نقطهمسیر گذری، ویژگی via نقطهمسیر را در منبع REST Waypoint یا پیام gRPC Waypoint روی true تنظیم کنید.
درحالیکه Routes API نشانیها، «شناسههای مکان»، و مختصات طول و عرض جغرافیایی را میپذیرد،
مختصات طول و عرض جغرافیایی، یا latLng، دقیقترین اصلاحات مسیر را برای نقاطمسیر گذری ارائه میدهد.
ویژگی via زمانی مؤثرتر است که مسیرها را در پاسخ به کشیدن نقاطمسیر روی نقشه ایجاد کنید. این رویکرد به شما امکان میدهد ببینید مسیر نهایی
در زمان واقعی چگونه بهنظر میرسد و به شما کمک میکند نقاطمسیر را در مکانهای قابلدسترس قرار دهید.
مثال: تنظیم نقطهمسیر گذری
مثال زیر نشان میدهد که چگونه میتوان "via": true را در یک نقطهمسیر میانی در یک درخواست کامل computeRoutes POST تنظیم کرد:
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 مشخص کنید، API
مکان را زمینکدیابی میکند و «شناسه مکان» منطبق را در
آرایه 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 است که حاوی «شناسههای جا» برای
مبدأ، مقصد، و دو نقطهمسیر میانی است که
با نشانی در نمایه درخواست ۰ و نمایه ۲ مشخص کردهاید. میانای برنامهسازی کاربردی نقطهمسیر میانی را در نمایه ۱ از 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" } ] } }