به طور پیشفرض، API با نقاط مسیر میانی به عنوان ایستگاههایی در طول مسیر رفتار میکند. با این حال، میتوانید یک نقطه مسیر میانی را به عنوان یک نقطه مسیر عبوری via مسیر پیکربندی کنید که وسیله نقلیه بدون توقف از آن عبور میکند.
از نقاط مسیر عبوری برای شکلدهی یا تنظیم یک مسیر خاص استفاده کنید. به جای تقسیم مسیر به ایستگاههای جداگانه برای سوار یا پیاده کردن، یک نقطه مسیر عبوری، موتور مسیریابی را مجبور میکند تا از یک مکان خاص در مسیر رسیدن به مقصد عبور کند - به عنوان مثال، برای دنبال کردن یک بخش جادهای ترجیحی یا جلوگیری از یک خطر شناخته شده.
مسیری شامل یک مبدا، یک یا چند نقطه عبور میانی و یک مقصد که فقط شامل یک شاخه مسیر است که مبدا را مستقیماً به مقصد متصل میکند.
برای پیکربندی یک نقطهی میانی به عنوان یک نقطهی عبور، ویژگی via نقطهی مورد نظر را در منبع REST Waypoint یا پیام gRPC Waypoint روی true تنظیم کنید.
در حالی که 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'
استفاده از آدرسها یا شناسههای مکان برای نقاط عبوری
اگرچه برای مسیریابی دقیق در مسیرهای عبوری، مختصات طول و عرض جغرافیایی را توصیه میکنیم، میتوانید با استفاده از یک رشته آدرس یا یک شناسه مکان، نقاط مسیر میانی را نیز مشخص کنید.
وقتی از یک آدرس یا شناسه مکان برای یک نقطه عبوری استفاده میکنید، API مکان را درونیابی کرده و به نزدیکترین جاده قابل پیمایش متصل میکند. این فرآیند اتصال جاده گاهی اوقات میتواند منجر به تغییرات مسیر یا عدم دقت در مقایسه با مختصات دقیق شود.
اگر یک نقطه مسیر را با استفاده از یک رشته آدرس یا Plus Code مشخص کنید، API مکان را geocode میکند و Place ID منطبق را در آرایه geocodingResults.intermediates در پاسخ برمیگرداند.
برای هر عنصر در آرایه intermediates ، از ویژگی intermediateWaypointRequestIndex برای تعیین اینکه کدام نقطه مسیر میانی در درخواست با Place ID در پاسخ مطابقت دارد، استفاده کنید.
مثال: درخواست شناسه مکان برای نقاط عبوری
مثال زیر درخواستی با سه نقطهی میانی عبوری را نشان میدهد که هر کدام "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 است که شامل شناسههای مکان برای مبدا، مقصد و دو نقطه مسیر میانی است که شما با استفاده از آدرس در درخواست با اندیس ۰ و اندیس ۲ مشخص کردهاید. API، نقطه مسیر میانی در اندیس ۱ را از 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" } ] } }