Combiner les récapitulatifs de calcul d'itinéraires avec la recherche sur le trajet

Vous pouvez combiner les calculs du résumé du calcul d'itinéraire avec la recherche sur un itinéraire. Dans ce cas, Text Search (nouvelle version) renvoie la durée et la distance du trajet vers chaque lieu de la réponse, puis de chaque lieu à la destination finale de l'itinéraire.

Pour utiliser Text Search (nouvelle version) pour calculer le résumé du calcul d'itinéraire et effectuer une recherche le long d'un itinéraire:

  1. Utilisez l'API Routes pour calculer un itinéraire qui renvoie une polyligne d'itinéraire dans la réponse.

  2. Utilisez le paramètre searchAlongRouteParameters.polyline.encodedPolyline pour transmettre la polyligne du parcours à la recherche textuelle (nouvelle) afin de biaiser les résultats de recherche vers le parcours. La réponse contient alors les lieux correspondant aux critères de recherche et situés à proximité de l'itinéraire spécifié.

  3. Incluez routingSummaries dans le masque de champ afin que la réponse inclue 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.

Par défaut, la recherche textuelle (nouvelle) effectue la recherche sur l'ensemble de l'itinéraire:

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'

La réponse contient deux tableaux: le tableau places contenant les lieux correspondants et le tableau routingSummaries contenant la durée et la distance à parcourir pour chaque lieu:

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

Pour chaque entrée du tableau legs, la recherche dans le texte (nouvelle) renvoie un temps de trajet en deux étapes:

  • La première section contient la durée du trajet et la distance entre le point de départ et le lieu. Dans cet exemple, la durée et la distance entre l'origine et la première place dans les résultats sont de 285 secondes et de 1 616 mètres.

  • La deuxième section contient la durée du trajet et la distance entre le lieu et la destination de l'itinéraire. Dans cet exemple, la durée et la distance sont de 2 466 secondes et 58 147 mètres.

Spécifier l'origine du calcul d'itinéraire, le mode de transport et les modificateurs d'itinéraire

Vous pouvez modifier le calcul du récapitulatif de recherche et d'itinéraire en spécifiant le point de départ, le mode de transport, les modificateurs d'itinéraire et les préférences d'itinéraire. Le mode de transport et les modificateurs d'itinéraire fonctionnent de la même manière que pour calculer des récapitulatifs d'itinéraire sans spécifier d'itinéraire, comme indiqué dans la section Spécifier des options de trajet.

Par défaut, la première étape de chaque résultat contient la distance entre l'origine définie par la polyligne et chaque lieu. Toutefois, vous pouvez remplacer cette valeur par défaut en spécifiant explicitement une origine de routage dans la requête. Si elle est spécifiée, la première étape de toutes les réponses spécifie les distances et la durée à partir de l'origine de calcul d'itinéraire spécifiée, en remplaçant l'origine de la polyligne.

Dans l'exemple suivant, vous spécifiez les coordonnées de San Mateo (Californie) comme point de départ, indiquez d'éviter les péages et définissez le nombre de résultats sur 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'

L'image suivante montre une carte contenant la polyligne de l'itinéraire, le nouvel emplacement de départ (repère bleu clair) et les lieux dans les résultats de recherche (repères verts). Notez que tous les résultats se trouvent sur le trajet, mais après San Mateo:

Résultats de recherche de l'origine de la mise à jour.