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árias para calcular a duração e a distância até cada local no 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 para cada local na resposta.

Usar Text Search (novo)

Na solicitação a seguir, você calcula a duração do percurso e a distância para cada lugar na resposta do Text Search (novo):

  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 o casas e a matriz routingSummaries contendo a duração e a distância até vão até cada lugar:

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

Cada elemento da matriz routingSummaries está na matriz correspondente local 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. Caso o routingSummary de um lugar não esteja disponível, a entrada da matriz está vazia.

Como este exemplo calcula a duração e a distância da origem do roteamento para cada lugar, o campo 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
        }
      ]
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ]
    },
   …
  ]
}

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 da viagem e a distância até cada local em a resposta da Nearby Search. Este exemplo procura restaurantes em Sydney, Austrália e define a restrição de local e a origem do trajeto como os mesmos coordenadas 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 o para a origem do roteamento. Por exemplo, você define locationRestriction como o centro de Sydney para direcionar os resultados da pesquisa para esse círculo. Mas você define origem de trajeto até as coordenadas da sua casa, ou seja, para um local diferente dentro do círculo de pesquisa. A solicitação, então, direciona 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 referentes a um carro. No entanto, você pode controlar o tipo de veículo e outras opções na pesquisa.

  • Use o parâmetro routingParameters.travelMode para definir o modo transporte para 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 dos dados. Para mais informações, consulte Especificar como e se incluir dados de tráfego.
  • 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 para evitar.

No próximo exemplo, você especifica o meio de transporte como DRIVE e deve evitar 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'