Rota matrisi alma

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Rota matrisi, rota bilgilerinin iki boyutlu bir dizisidir. Satırlar başlangıç noktalarına, sütunlar ise varış noktalarına karşılık gelir. Başlangıç ve varış noktalarının listesi verildiğinde, Route Matrix sınıfı her başlangıç noktasında başlayıp her varış noktasında biten bir rotanın mesafesini ve süresini hesaplar. Birden fazla başlangıç ve hedef için bir rotanın mesafesini ve süresini hesaplamak üzere Route Matrix sınıfını kullanın.

İstek sınırları

RouteMatrix.computeRouteMatrix() yöntemi, adres veya yer örnekleri kullanan ara noktalar ve öğeler için aşağıdaki istek sınırlarını uygular. Öğeler, bir rota matrisindeki her başlangıç ve varış noktası arasındaki rotalardır. Bu nedenle, öğe sayısı başlangıç noktası sayısı ile varış noktası sayısının çarpımıdır. Örneğin, 10 kaynak ve 10 hedefiniz varsa 100 öğeniz vardır:

  • TRANSIT rotaları olmayan rotalarda öğe sayısı 625'i aşamaz.
  • TRANSIT rotası belirtirseniz öğe sayısı 100'ü aşamaz.
  • TRAFFIC_AWARE_OPTIMAL değerini belirtirseniz öğe sayısı 100'ü aşamaz.
  • Adresleri veya yer örneklerini kullanarak kaynak ya da hedef belirtirseniz toplamda 50 tane belirtebilirsiniz.

Örnek rota matrisi isteği

Aşağıdaki örnekte ComputeRouteMatrixRequest gösterilmektedir. Bu örnekte aşağıdaki işlemler yapılır:

  • İki başlangıç ve iki hedef ara nokta dizisi belirtmeyi gösterir. Yöntem, her başlangıç noktasından her varış noktasına bir rota hesaplar. Bu nedenle, yanıtta dört rota bulunur.
    Dizideki ilk öğe 0 dizininde, ikinci öğe 1 dizininde yer alır ve bu şekilde devam eder.
  • Döndürülecek alanları belirtin. Bu örnekte, her rota için durationMillis, distanceMeters ve condition değerlerini döndürecek şekilde isteği yapılandırın.

TypeScript

const request = {
  origins: [origin1, origin2], 
  destinations: [destinationA, destinationB],
  travelMode: 'DRIVING',
  units: google.maps.UnitSystem.METRIC,
  fields: ['distanceMeters', 'durationMillis', 'condition'],
};

JavaScript

const request = {
    origins: [origin1, origin2],
    destinations: [destinationA, destinationB],
    travelMode: 'DRIVING',
    units: google.maps.UnitSystem.METRIC,
    fields: ['distanceMeters', 'durationMillis', 'condition'],
};

Yanıtta, aşağıdaki örnekte gösterildiği gibi tüm kaynak ve hedef ara noktaların kombinasyonu için dört olası rota yer alır:

"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
        }
      ]
    }
  ]
}
    

Sonuçtaki her rotayı, 2 boyutlu dizideki ilgili RouteMatrixItem değerini bulmak için başlangıç ve varış noktası dizinini kullanarak tanımlayın. Örneğin, istekte dizin 1'deki başlangıç noktasından ve hedef 0'dan hesaplanan rotayı açıklayan RouteMatrixItem, RouteMatrix.rows dizisinin 2. öğesinde ve RouteMatrixRow.items dizisinin 1. öğesinde yer alır.

Aşağıdaki kod snippet'inde, belirli bir başlangıç ve hedef için rotayı bulmak üzere RouteMatrixItem öğesinin nasıl tanımlanacağı gösterilmektedir:

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

Döndürülecek alanları seçin

Rota matrisi istediğinizde, yanıtta hangi bilgilerin döndürülmesi gerektiğini belirtmek için alan maskesi kullanmanız gerekir.

Alan maskesi kullanmak, gereksiz veriler istememenizi de sağlar. Bu da yanıt gecikmesini azaltır ve sisteminizin ihtiyaç duymadığı bilgilerin döndürülmesini önler.

Aşağıdaki snippet'te gösterildiği gibi ComputeRoutesMatrixRequest.fields özelliğini ayarlayarak ihtiyacınız olan alanların listesini belirtin:

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

Hangi alan maskelerinin kullanılacağını belirleme

Hangi alanları kullanmak istediğinizi belirlemek ve bu alanlar için alan maskeleri oluşturmak üzere aşağıdaki adımları uygulayabilirsiniz:

  1. ['*'] alan maskesini kullanarak tüm alanları isteyin.
  2. İstediğiniz alanlar için RouteMatrixItem sınıfındaki alanların hiyerarşisine bakın.
  3. Önceki adımda gösterilen alanların hiyerarşisini kullanarak alan maskelerinizi oluşturun. Şu biçimi kullanın:

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

Örneğin, şu RouteMatrixItem için:

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

RouteMatrixItem için yalnızca tollInfo alanını döndürmek istiyorsanız alan maskeniz aşağıdaki gibidir:

fields: ['travelAdvisory.tollInfo']

Bunun yerine tahmini yakıt tüketimini istemek istiyorsanız alan maskeniz aşağıdaki gibi olmalıdır:

fields: ['travelAdvisory.fuelConsumptionMicroliters']

İkisini de istemek istiyorsanız alan maskeniz aşağıdaki gibi olmalıdır:

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

Seyahat uyarılarının tamamını talep etmek istiyorsanız alan maskeniz aşağıdaki gibi olmalıdır:

fields: ['travelAdvisory']