Calcular o resumo do roteamento

Para usar o Text Search (novo) ou o Nearby Search (novo) para calcular a duração e a distância da viagem até cada lugar na resposta:

  1. Transmita o parâmetro routingParameters.origin na solicitação para especificar as coordenadas de latitude e longitude da origem do roteamento. Esse parâmetro é necessário para calcular a duração e a distância de cada lugar na resposta.

  2. 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.

O API Explorer permite fazer solicitações em tempo real para que você se familiarize com a API e as opções dela:

Faça um teste

Usar o Text Search (novo)

Na solicitação a seguir, você calcula a duração e a distância da viagem até cada lugar na resposta da pesquisa de texto (nova):

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    }
  }
}' \
-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 JSON: a matriz places contém os lugares correspondentes e a matriz routingSummaries contém a duração e a distância para viajar até cada lugar:

{
  "places": [
    {
      object (Place)
    }
  ]
  "routingSummaries": [
    {
      object (RoutingSummary)
    }
}

Cada elemento na matriz routingSummaries está no local de matriz correspondente como o lugar na matriz places. Ou seja, o elemento em routingSummaries[0] corresponde ao lugar em places[0].

O comprimento da matriz de routingSummaries é igual ao comprimento da matriz de places. Se o routingSummary de um lugar não estiver disponível, a entrada da matriz vai estar vazia.

Como este exemplo calcula a duração e a distância da origem do roteamento para cada lugar, o campo routingSummaries.legs na resposta contém um único objeto Leg que contém o duration e o distanceMeters da origem do roteamento para o lugar.

{
  "places": [
    {
      "formattedAddress": "1, Westfield Sydney Central Plaza, 450 George St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Gözleme King Sydney",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    
  ]
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "597s",
          "distanceMeters": 2607
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3fa97cd745:0x6aecf365bf497c08!3e0"
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3da97f60c1:0x845f3273bd764f6c!3e0"
    },
   
  ]
}

Neste exemplo, você pode conferir que a duração e a distância da origem do roteamento até o primeiro lugar nos resultados são 597 segundos e 2.607 metros.

Neste exemplo, você calcula a duração e a distância da viagem até cada lugar na resposta da Pesquisa nas proximidades. Este exemplo pesquisa restaurantes em Sydney, Austrália, e define a restrição de local e a origem do roteamento para a mesma coordenada de latitude e longitude:

  curl -X POST -d '{
    "includedTypes": ["restaurant"],
    "maxResultCount": 10,
    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": -33.8688,
          "longitude": 151.1957362},
        "radius": 500.0
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": -33.8688,
        "longitude": 151.1957362
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key:API_KEY" \
  -H "X-Goog-FieldMask: places.displayName,routingSummaries" \
  https://places.googleapis.com/v1/places:searchNearby

Não é necessário usar as mesmas coordenadas para o locationRestriction e a origem do roteamento. Por exemplo, você define o locationRestriction como o ponto central de Sydney para enviesar os resultados da pesquisa para esse círculo. Mas você definiu a origem do trajeto como as coordenadas da sua casa, ou seja, um local diferente dentro do círculo de pesquisa. A solicitação, então, distorce os resultados da pesquisa para o círculo e calcula os resumos de roteamento com base na localização da sua casa.

Especificar opções de viagem

Por padrão, os cálculos de duração e distância são para um carro. No entanto, você pode controlar o tipo de veículo, bem como outras opções, na pesquisa.

  • Use o parâmetro routingParameters.travelMode para definir o modo de transporte como DRIVE, BICYCLE, WALK ou TWO_WHEELER. Para mais informações sobre essas opções, consulte Tipos de veículos disponíveis para trajetos.

  • Use a propriedade routingParameters.routingPreference para definir a opção de preferência de roteamento como TRAFFIC_UNAWARE (padrão), TRAFFIC_AWARE ou TRAFFIC_AWARE_OPTIMAL. Cada opção tem níveis variáveis de qualidade e latência de dados. Para mais informações, consulte Especificar como e se incluir dados de tráfego.

    A propriedade routingParameters.routingPreference afeta as rotas contidas no campo directionsUri da prévia (pré-GA), porque o Google Maps mostra opções de trânsito quando abre o link.

  • Use a propriedade routingParameters.routeModifiers para especificar avoidTolls, avoidHighways, avoidFerries e avoidIndoor. Para mais informações sobre essas opções, consulte Especificar recursos de rota a serem evitados.

No próximo exemplo, você especifica o modo de viagem como DRIVE e evita rodovias:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    },
    "travelMode":"DRIVE",
    "routeModifiers": {
      "avoidHighways": 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'