ماتریس مسیر را دریافت کنید

ماتریس مسیر یک آرایه دو بعدی از اطلاعات مسیر است که در آن سطرها با مبدا و ستون ها با مقصد مطابقت دارند. با توجه به فهرستی از مبدا و مقصد، کلاس Route Matrix مسافت و مدت یک مسیر را محاسبه می کند که از هر مبدا شروع می شود و به هر مقصد ختم می شود. از کلاس Route Matrix برای محاسبه مسافت و مدت یک مسیر برای چندین مبدا و مقصد استفاده کنید.

محدودیت های درخواستی

متد RouteMatrix.computeRouteMatrix() محدودیت های درخواست زیر را برای نقاط بین با استفاده از نمونه های آدرس یا مکان و برای آیتم ها اعمال می کند. آیتم ها مسیرهای بین هر مبدا و مقصد در یک ماتریس مسیر هستند، بنابراین تعداد آیتم ها تعداد مبدا ضربدر تعداد مقصد است. به عنوان مثال، اگر 10 مبدا و 10 مقصد داشته باشید، 100 مورد دارید:

  • تعداد موارد برای مسیرهایی که مسیرهای TRANSIT نیستند نمی تواند از 625 تجاوز کند.
  • اگر یک مسیر TRANSIT را مشخص کنید ، تعداد موارد نمی تواند از 100 تجاوز کند.
  • اگر TRAFFIC_AWARE_OPTIMAL را مشخص کنید ، تعداد موارد نمی تواند از 100 بیشتر شود.
  • اگر مبدا یا مقصد را با استفاده از آدرس‌ها یا نمونه‌های مکان مشخص کنید ، در مجموع تا 50 مورد را از این طریق مشخص می‌کنید.

نمونه درخواست ماتریس مسیر

مثال زیر یک ComputeRouteMatrixRequest را نشان می دهد. این مثال موارد زیر را انجام می دهد:

  • مشخص کردن آرایه ای از دو نقطه مبدا و دو نقطه مقصد را نشان می دهد. این روش یک مسیر را از هر مبدأ به هر مقصد محاسبه می کند، بنابراین پاسخ شامل چهار مسیر است.
    در آرایه، عنصر اول در شاخص 0، عنصر دوم شاخص 1 و غیره است.
  • فیلدهایی را برای بازگشت مشخص کنید. در این مثال، درخواست بازگشت durationMillis ، distanceMeters و condition برای هر مسیر پیکربندی کنید.
const request = {
  origins: [origin1, origin2],
  destinations: [destinationA, destinationB],
  travelMode: google.maps.TravelMode.DRIVING,
  units: google.maps.UnitSystem.METRIC,
  fields: ['durationMillis', 'distanceMeters', 'condition'], 
};
    

همانطور که در مثال زیر نشان داده شده است، پاسخ شامل چهار مسیر ممکن برای ترکیب تمام ایستگاه های مسیر مبدا و مقصد است:

"matrix": {
  "rows": [
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 202587,
          "durationMillis": 10040000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 252734,
          "durationMillis": 12240000
        }
      ]
    },
    {
      "items": [
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 166135,
          "durationMillis": 6596000
        },
        {
          "condition": "ROUTE_EXISTS",
          "distanceMeters": 216282,
          "durationMillis": 8797000
        }
      ]
    }
  ]
}
    

هر مسیر را در نتیجه با استفاده از شاخص مبدا و مقصد برای یافتن RouteMatrixItem مربوطه در آرایه دو بعدی شناسایی کنید. به عنوان مثال، RouteMatrixItem که مسیر محاسبه شده از مبدأ در شاخص 1 و مقصد 0 در درخواست را توصیف می کند، در عنصر دوم آرایه RouteMatrix.rows و عنصر اول از آرایه RouteMatrixRow.items خواهد بود.

قطعه کد زیر نحوه شناسایی RouteMatrixItem را برای یافتن مسیر برای یک مبدا و مقصد خاص نشان می دهد:

// Find the route for origin 'x' and destination 'y'.
const {matrix} = await RouteMatrix.computeRouteMatrix(request);
const myRouteMatrixItem = matrix.rows[x].items[y];
    

فیلدهایی را برای بازگشت انتخاب کنید

هنگامی که ماتریس مسیر را درخواست می کنید، باید از یک فیلد ماسک استفاده کنید تا مشخص کنید پاسخ چه اطلاعاتی را باید برگرداند.

استفاده از یک فیلد ماسک همچنین تضمین می‌کند که داده‌های غیرضروری درخواست نمی‌کنید، که به نوبه خود به تأخیر پاسخ کمک می‌کند و از بازگرداندن اطلاعاتی که سیستم شما به آن نیاز ندارد جلوگیری می‌کند.

همانطور که در قطعه زیر نشان داده شده است، با تنظیم ویژگی ComputeRoutesMatrixRequest.fields ، لیست فیلدهایی را که نیاز دارید مشخص کنید:

fields: ['durationMillis', 'distanceMeters', 'condition'],
    

تعیین کنید که از چه ماسک هایی استفاده کنید

در اینجا نحوه تعیین اینکه از کدام فیلدها می خواهید استفاده کنید و ماسک فیلد برای آنها بسازید، آمده است:

  1. تمام فیلدها را با استفاده از یک فیلد ماسک ['*'] درخواست کنید.
  2. به سلسله مراتب فیلدهای کلاس RouteMatrixItem برای فیلدهای مورد نظر خود نگاه کنید.
  3. ماسک های فیلد خود را با استفاده از سلسله مراتب فیلدهای نشان داده شده در مرحله قبل و با استفاده از این فرمت بسازید :

    topLevelField[.secondLevelField][.thirdLevelField][...]

به عنوان مثال، برای این RouteMatrixItem :

  "travelAdvisory": {
    "fuelConsumptionMicroliters": 0,
    "tollInfo": {
      "estimatedPrices": [
        {
          "currencyCode": "USD",
          "units": 4,
          "nanos": 400000000
        }
      ]
    }
  },
    

اگر می‌خواهید فقط فیلد tollInfo را برای RouteMatrixItem برگردانید، ماسک فیلد شما به صورت زیر است:

fields: ['travelAdvisory.tollInfo']

اگر به جای آن می‌خواهید مصرف سوخت تخمینی را درخواست کنید، ماسک میدان شما به شرح زیر است:

fields: ['travelAdvisory.fuelConsumptionMicroliters']

اگر می خواهید هر دو را درخواست کنید، فیلد ماسک شما به شرح زیر است:

fields: ['travelAdvisory.fuelConsumptionMicroliters', 'travelAdvisory.tollInfo']

و اگر می خواهید مجموعه کامل توصیه های سفر را درخواست کنید، ماسک میدانی شما به شرح زیر است:

fields: ['travelAdvisory']