Distance Matrix

Exemplo 2 – Encontrar assistência de veículo mais próxima

No segmento de seguradoras de veículos é muito comum o uso do Distance Matrix API para reduzir o tempo de atendimento da assistência aos veículos.

Considerando que o veículo quebrado e os caminhões guinchos compartilham a localização da latitude/longitude, quando o veículo quebrado aciona a assistência, o sistema poderá utilizar a Distance Matrix API para decidir qual caminhão guincho chegará primeiro.

Neste exemplo temos como destino dois veículos quebrados e como origem cinco caminhões guincho:

{
    "calculationMode": "THE_FASTEST",
    "destinations": [
        {
            "latitude": -23.5654032,
            "longitude": -46.62117004,
            "siteId": "veiculo1-Cambuci"
        },
        {
            "latitude": -23.574136,
            "longitude": -46.655844,
            "siteId": "veiculo2-Jardins"
        }
    ],
    "origins": [
        {
            "latitude": -23.58664317,
            "longitude": -46.63833618,
            "siteId": "guincho1-VilaMariana"
        },
        {
            "latitude": -23.562412,
            "longitude": -46.638788,
            "siteId": "guincho2-Liberdade"
        },
        {
            "latitude": -23.55363650451996,
            "longitude": -46.620810158377516,
            "siteId": "guincho3-Mooca"
        },
        {
            "latitude": -23.561603,
            "longitude": -46.655840,
            "siteId": "guincho4-MASP"
        },
        {
            "latitude": -23.535016,
            "longitude": -46.735701,
            "siteId": "guincho5-CEAGESP"
        }
    ],
    "tripProfile": "MAPLINK"
}

Na resposta será retornado o array de objetos elements, onde cada objeto represta a relação de cada par de origem e destino.

Neste caso, será retornado a distância entre cada guincho e veículo. Assim será possível identificar qual será o guincho que conseguirá realizar a assistência de forma rápida. 

Cada objeto em elements possuirá as seguintes informações:

  • origin – Identificador do ponto de origem;
  • destination – Identificador do ponto de destino;
  • distance – Distância total em metros;
  • nominalDuration – Duração total em segundos;
  • averageSpeed – Velocidade média do caminho entre a origem e destino em km/h.

A resposta completa pode ser conferida abaixo:

{
    "id": "60761bd2b966b04b48d1019c",
    "clientId": "maplink",
    "elements": [
        {
            "origin": "guincho1-VilaMariana",
            "destination": "veiculo1-Cambuci",
            "distance": 3569,
            "nominalDuration": 643,
            "averageSpeed": 19.98
        },
        {
            "origin": "guincho1-VilaMariana",
            "destination": "veiculo2-Jardins",
            "distance": 3711,
            "nominalDuration": 365,
            "averageSpeed": 36.6
        },
        {
            "origin": "guincho2-Liberdade",
            "destination": "veiculo1-Cambuci",
            "distance": 4209,
            "nominalDuration": 514,
            "averageSpeed": 29.48
        },
        {
            "origin": "guincho2-Liberdade",
            "destination": "veiculo2-Jardins",
            "distance": 3710,
            "nominalDuration": 336,
            "averageSpeed": 39.75
        },
        {
            "origin": "guincho3-Mooca",
            "destination": "veiculo1-Cambuci",
            "distance": 2787,
            "nominalDuration": 426,
            "averageSpeed": 23.55
        },
        {
            "origin": "guincho3-Mooca",
            "destination": "veiculo2-Jardins",
            "distance": 5265,
            "nominalDuration": 490,
            "averageSpeed": 38.68
        },
        {
            "origin": "guincho4-MASP",
            "destination": "veiculo1-Cambuci",
            "distance": 6842,
            "nominalDuration": 859,
            "averageSpeed": 28.67
        },
        {
            "origin": "guincho4-MASP",
            "destination": "veiculo2-Jardins",
            "distance": 2082,
            "nominalDuration": 305,
            "averageSpeed": 24.57
        },
        {
            "origin": "guincho5-CEAGESP",
            "destination": "veiculo1-Cambuci",
            "distance": 15608,
            "nominalDuration": 1588,
            "averageSpeed": 35.38
        },
        {
            "origin": "guincho5-CEAGESP",
            "destination": "veiculo2-Jardins",
            "distance": 11217,
            "nominalDuration": 1057,
            "averageSpeed": 38.2
        }
    ],
    "createdAt": 1618353108108
}

Em uma visualização tabular do resultado, é possível concluir o seguinte:

  1. O veículo "veiculo1-Cambuci" receberá atendimento mais rápido e próximo do guincho "guincho3-Mooca";
  2. O veículo "veiculo2-Jardins" receberá atendimento mais rápido e próximo do guincho "guincho4-MASP".
origindestinationdistancenominalDurationaverageSpeed
guincho1-VilaMarianaveiculo1-Cambuci356964319.98
guincho2-Liberdadeveiculo1-Cambuci420951429.48
guincho3-Moocaveiculo1-Cambuci278742623.55
guincho4-MASPveiculo1-Cambuci684285928.67
guincho5-CEAGESPveiculo1-Cambuci15608158835.38
guincho1-VilaMarianaveiculo2-Jardins371136536.6
guincho2-Liberdadeveiculo2-Jardins371033639.75
guincho3-Moocaveiculo2-Jardins526549038.68
guincho4-MASPveiculo2-Jardins208230524.57
guincho5-CEAGESPveiculo2-Jardins11217105738.2
Resultado da requisição organizada em tabela