با فراخوانی متد computeRouteMatrix (REST) یا متد Streaming ComputeRouteMatrix (gRPC)، از API مسیرها (Routes API) برای محاسبه مسافت و مدت زمان یک مسیر برای چندین مبدا و مقصد استفاده کنید.
با داشتن فهرستی از مبداها و مقاصد، این روش مسافت و مدت زمان یک مسیر را که از هر مبدا شروع شده و در هر مقصد پایان مییابد، محاسبه میکند.
دریافت ماتریس مسیرهای حمل و نقل عمومی
همچنین میتوانید ماتریس مسیر را در هنگام عبور و مرور محاسبه کنید. برای مثال، به «دریافت ماتریس مسیر در هنگام عبور و مرور» مراجعه کنید.
محدودیتهای درخواست
روشهای محاسبه ماتریس مسیر، محدودیتهای درخواست زیر را برای نقاط مسیر با استفاده از آدرس یا شناسههای مکان و برای عناصر اعمال میکنند. عناصر، مسیرهای بین هر مبدا و مقصد در یک ماتریس مسیر هستند، بنابراین تعداد عناصر برابر با تعداد مبداها ضربدر تعداد مقصدها است. به عنوان مثال، اگر 10 مبدا و 10 مقصد داشته باشید، 100 عنصر خواهید داشت:
تعداد عناصر برای مسیرهایی که مسیرهای
TRANSITنیستند، نمیتواند از ۶۲۵ تجاوز کند.اگر یک مسیر
TRANSITمشخص کنید ، تعداد عناصر نمیتواند از ۱۰۰ تجاوز کند.اگر
TRAFFIC_AWARE_OPTIMALرا مشخص کنید ، تعداد عناصر نمیتواند از ۱۰۰ تجاوز کند. برای اطلاعات بیشتر در موردTRAFFIC_AWARE_OPTIMAL، به بخش «نحوه و نحوهی گنجاندن دادههای ترافیک» مراجعه کنید.اگر مبدا یا مقصد را با استفاده از آدرس یا شناسه مکان مشخص کنید ، میتوانید حداکثر ۵۰ مورد را به این روش مشخص کنید.
خطاهای پاسخ
یکی از ویژگیهای روشهای محاسبه ماتریس مسیر این است که خطاها میتوانند برای کل پاسخ یا برای عناصر پاسخ منفرد بازگردانده شوند. به عنوان مثال، اگر درخواست ناقص باشد (مثلاً مبدأ صفر داشته باشد)، کل پاسخ حاوی خطا است.
با این حال، اگر خطایی در زیرمجموعهای از عناصر در پاسخ رخ دهد (برای مثال، یک مسیر برای یک ترکیب از مبدا و مقصد قابل محاسبه نباشد)، تنها عناصری که تحت تأثیر خطا قرار گرفتهاند، کد خطا را برمیگردانند.
نتایج استریم gRPC
متد ComputeRouteMatrix gRPC لیستی از مبدا و مقصد را دریافت کرده و یک جریان حاوی اطلاعات مسیر برای هر ترکیب از مبدا و مقصد را برمیگرداند. از آنجا که نتایج به صورت یک جریان برگردانده میشوند، لازم نیست منتظر بمانید تا تمام ترکیبات مسیر ممکن محاسبه شوند تا بتوانید پردازش نتایج را شروع کنید.
تضمینی وجود ندارد که عناصر برگردانده شده توسط استریم به ترتیب خاصی برگردانده شوند. بنابراین، هر عنصر پاسخ شامل یک origin_index و یک destination_index است. برای مبداها و مقاصد مشخص شده توسط درخواست، مسیر origin معادل origins[origin_index] برای یک عنصر مشخص و مسیر destination معادل destinations[destination_index] است. این آرایهها دارای اندیس صفر هستند. ذخیره ترتیب لیست مبدا و مقصد بسیار مهم است.
مثالهایی از محاسبه ماتریس مسیر
از متد computeRouteMatrix در یک درخواست HTTP برای محاسبه ماتریس مسیر استفاده کنید.
مثال HTTP
مثال زیر یک درخواست HTTP از نوع computeRouteMatrix را نشان میدهد. در این مثال شما:
آرایهای از دو نقطه مبدا و دو نقطه مقصد را مشخص کنید. این متد مسیری را از هر مبدا به هر مقصد محاسبه میکند، بنابراین پاسخ شامل چهار مسیر است.
در آرایه، عنصر اول دارای اندیس ۰، عنصر دوم دارای اندیس ۱ و به همین ترتیب است.
یک ماسک فیلد پاسخ اضافه کنید تا مشخص شود کدام فیلدهای پاسخ (REST) یا ComputeRoutesResponse (gRPC) باید برگردانده شوند. در این مثال، درخواست را طوری پیکربندی کنید که
originIndex،destinationIndex،duration،distanceMeters،statusوconditionرا برای هر مسیر برگرداند. برای اطلاعات بیشتر، به Choose fields to return مراجعه کنید.
curl -X POST -d '{ "origins": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420761, "longitude": -122.081356 } } }, "routeModifiers": { "avoid_ferries": true} }, { "waypoint": { "location": { "latLng": { "latitude": 37.403184, "longitude": -122.097371 } } }, "routeModifiers": { "avoid_ferries": true} } ], "destinations": [ { "waypoint": { "location": { "latLng": { "latitude": 37.420999, "longitude": -122.086894 } } } }, { "waypoint": { "location": { "latLng": { "latitude": 37.383047, "longitude": -122.044651 } } } } ], "travelMode": "DRIVE", "routingPreference": "TRAFFIC_AWARE" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \ -H 'X-Goog-FieldMask: originIndex,destinationIndex,duration,distanceMeters,status,condition' \ 'https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix'
پاسخ شامل چهار مسیر ممکن برای ترکیب تمام نقاط مسیر مبدا و مقصد است.
با استفاده از فیلدهای پاسخ originIndex و destinationIndex ، هر مسیر را در پاسخ شناسایی کنید. برای مثال، originIndex با مقدار ۱ در پاسخ، مربوط به مسیری است که از نقطه مسیر در اندیس ۱ از آرایه origins در درخواست محاسبه شده است.
[ { "originIndex": 0, "destinationIndex": 0, "status": {}, "distanceMeters": 822, "duration": "160s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 0, "status": {}, "distanceMeters": 2919, "duration": "361s", "condition": "ROUTE_EXISTS" }, { "originIndex": 1, "destinationIndex": 1, "status": {}, "distanceMeters": 5598, "duration": "402s", "condition": "ROUTE_EXISTS" }, { "originIndex": 0, "destinationIndex": 1, "status": {}, "distanceMeters": 7259, "duration": "712s", "condition": "ROUTE_EXISTS" } ]
مثالهای gRPC
برای مثال درخواستهای gRPC ، به مثالهای موجود در Example gRPC request مراجعه کنید. مثال جاوا در آن صفحه، هم Compute Routes و هم Compute Route Matrix را فراخوانی میکند.