Combinar resumos de roteamento com a pesquisa no trajeto

É possível combinar os cálculos do resumo de roteamento com a pesquisa ao longo de um trajeto. Nesse caso, o Text Search (New) retorna a duração e a distância da viagem até cada lugar na resposta e, em seguida, de cada lugar até o destino final da rota.

Para usar o Text Search (novo) para calcular o resumo do roteamento com a pesquisa em uma rota:

  1. Use a Routes API para calcular uma rota que retorna uma polilinha de rota na resposta.

  2. Use o parâmetro searchAlongRouteParameters.polyline.encodedPolyline para transmitir a polilinha da rota à pesquisa de texto (nova) e envie os resultados da pesquisa para a rota. A resposta contém lugares que correspondem aos critérios de pesquisa e também estão localizados perto da rota especificada.

  3. Inclua routingSummaries na máscara de campo para que a resposta inclua a matriz routingSummaries. Essa matriz contém a duração e a distância da origem do roteamento até cada lugar na resposta.

Por padrão, a pesquisa de texto (nova) realiza a pesquisa em todo o trajeto:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food",
  "searchAlongRouteParameters": {
    "polyline": {
      "encodedPolyline": "ROUTE_POLYLINE"
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

A resposta contém duas matrizes: a matriz places, que contém os lugares correspondentes, e a matriz routingSummaries, que contém a duração e a distância para viajar até cada lugar:

{
  "places": [
    {
      "formattedAddress": "1199 El Camino Real, San Bruno, CA 94066, USA",
      "priceLevel": "PRICE_LEVEL_INEXPENSIVE",
      "displayName": {
        "text": "Vegan Mob - Vegan BBQ and Soul Food",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "839 Kearny St, San Francisco, CA 94108, USA",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Enjoy Vegetarian",
        "languageCode": "en"
      }
    },
   
],
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "285s",
          "distanceMeters": 1616
        },
        {
          "duration": "2466s",
          "distanceMeters": 58147
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808f87f9ede375f5:0xa37171fea1a16b28!1m0!3e0"
    },
    {
      "legs": [
        {
          "duration": "696s",
          "distanceMeters": 4704
        },
        {
          "duration": "2787s",
          "distanceMeters": 58901
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808580f4cebdb06f:0xd3af09e5742234f2!1m0!3e0"
    },
   
  ]
}

Para cada entrada na matriz legs, a Pesquisa de texto (nova) retorna um tempo de viagem de duas etapas:

  • O primeiro trecho contém a duração e a distância da viagem da origem até o lugar. Neste exemplo, a duração e a distância da origem até o primeiro lugar nos resultados são 285 segundos e 1.616 metros.

  • O segundo trecho contém a duração e a distância da viagem do lugar até o destino do trajeto. Neste exemplo, a duração e a distância são 2.466 segundos e 58.147 metros.

Especificar a origem do roteamento, o modo de transporte e os modificadores de rota

É possível modificar o cálculo do resumo da pesquisa e do roteamento especificando a origem, o modo de viagem, os modificadores de rota e as preferências de roteamento. Os modificadores de modo de viagem e de rota funcionam da mesma forma que para calcular resumos de roteamento sem especificar uma rota, conforme mostrado no tópico Especificar opções de viagem.

Por padrão, a primeira etapa de cada resultado contém a distância da origem definida pela poligonal até cada lugar. No entanto, é possível substituir esse padrão especificando explicitamente uma origem de roteamento na solicitação. Se especificado, o primeiro trecho de todas as respostas especifica as distâncias e a duração da origem de roteamento especificada, substituindo a origem da poligonal.

No próximo exemplo, você especifica uma origem de roteamento como as coordenadas de San Mateo, CA, especifica para evitar pedágios e define o número de resultados como 5:

  curl -X POST -d '{
    "textQuery" : "Spicy Vegetarian Food",
    "maxResultCount": 5,
    "searchAlongRouteParameters": {
      "polyline": {
        "encodedPolyline": "ROUTE_POLYLINE"
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": 37.56617,
        "longitude": -122.30870
      },
      "travelMode":"DRIVE",
      "routeModifiers": {
        "avoidTolls": true
      }
    }
  }' \
  -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
  -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
  'https://places.googleapis.com/v1/places:searchText'

A imagem a seguir mostra um mapa que contém a polilinha da rota, a nova origem (alfinete azul-claro) e os lugares nos resultados da pesquisa (alfinete verde). Observe como todos os resultados estão ao longo do trajeto, mas passam por San Mateo:

Resultados da pesquisa da origem da atualização.