Calculer le résumé de l'itinéraire

Pour utiliser Text Search (nouvelle version) ou Nearby Search (nouvelle version) pour calculer la durée du trajet et la distance jusqu'à chaque lieu dans la réponse:

  1. Transmettez le paramètre routingParameters.origin dans la requête pour spécifier le (latitude et longitude) du point de départ de l'itinéraire. Ce paramètre est obligatoire pour calculer la durée et la distance de chaque lieu dans la réponse.

  2. Incluez routingSummaries dans le masque de champ afin que la réponse comprenne le tableau routingSummaries. Ce tableau contient la durée et la distance entre le point de départ du calcul d'itinéraire et chaque lieu de la réponse.

Utiliser Text Search (nouvelle version)

Dans la requête suivante, vous calculez la durée du trajet et la distance à chaque lieu dans la réponse Text Search (New) :

  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'

La réponse contient deux tableaux JSON: le tableau places contient les valeurs correspondantes lieux, et le tableau routingSummaries contenant la durée et la distance jusqu'à se rendre dans chaque lieu:

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

Chaque élément du tableau routingSummaries se trouve à l'emplacement de tableau correspondant à l'emplacement du tableau places. Autrement dit, l'élément situé à routingSummaries[0] correspond à l'emplacement situé à places[0].

La longueur du tableau de routingSummaries est identique à celle du tableau de places Si le routingSummary d'un lieu n'est pas disponible, l'entrée du tableau est vide.

Comme cet exemple calcule la durée et la distance par rapport à l'itinéraire point de départ de chaque lieu, le champ legs de la réponse contient un seul Leg Objet qui contient les valeurs duration et distanceMeters de l'origine de routage sur le lieu:

{
  "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
        }
      ]
    },
   …
  ]
}

Cet exemple montre que la durée et la distance par rapport à l'itinéraire à la première position dans les résultats est 597 secondes et 2 607 mètres.

Dans cet exemple, vous calculez la durée du trajet et la distance jusqu'à chaque lieu dans la réponse Nearby Search. Cet exemple recherche des restaurants à Sydney, Australie, et définit la restriction géographique et le point de départ de l'itinéraire sur le même latitude et 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

Vous n'avez pas besoin d'utiliser les mêmes coordonnées pour locationRestriction et pour l'origine du calcul d'itinéraire. Par exemple, placez locationRestriction au centre point de Sydney pour influencer les résultats de la recherche en fonction de ce cercle. Vous définissez ensuite l'origine du calcul d'itinéraire sur les coordonnées de votre maison, c'est-à-dire sur un autre emplacement dans le cercle de recherche. La requête biaise ensuite les résultats de recherche en fonction du cercle et calcule les récapitulatifs d'itinéraire en fonction de l'emplacement de votre maison.

Indiquer les options de transport

Par défaut, les calculs de durée et de distance concernent une voiture. Cependant, vous peuvent contrôler le type de véhicule ainsi que d'autres options de recherche.

  • Utilisez le paramètre routingParameters.travelMode pour définir le mode de transport sur DRIVE, BICYCLE, WALK ou TWO_WHEELER. Pour en savoir plus sur ces options, consultez la section Types de véhicules disponibles pour les itinéraires.

  • Utilisez la propriété routingParameters.routingPreference pour définir l'option de préférence de routage sur TRAFFIC_UNAWARE (par défaut), TRAFFIC_AWARE ou TRAFFIC_AWARE_OPTIMAL. Chaque option présente des niveaux de qualité et de latence des données différents. Pour en savoir plus, consultez la section Spécifier si et comment inclure le trafic données.
  • Utilisez la propriété routingParameters.routeModifiers pour spécifier avoidTolls, avoidHighways, avoidFerries et avoidIndoor. Pour en savoir plus sur ces options, consultez la section Spécifier des éléments de parcours à éviter.

Dans l'exemple suivant, vous spécifiez le mode de transport comme DRIVE et évitez les autoroutes :

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'