Planifier un itinéraire

Il peut arriver que vous souhaitiez planifier l'itinéraire que votre application fournit aux utilisateurs. L'utilisation d'un jeton de routage de l'API Routes (ou de l'API Routes Preferred) peut vous aider à spécifier deux éléments pour votre itinéraire planifié:

  • Polyligne pour l'itinéraire

  • Vos objectifs d'itinéraire

Voici quelques exemples d'objectifs de routage que vous pouvez avoir:

  • Réduisez le délai de livraison: une entreprise livrant des repas peut souhaiter réduire le temps de livraison.

  • Réduisez les temps de trajet ou la consommation de carburant: une entreprise de logistique peut souhaiter améliorer l'efficacité de ses chauffeurs et réduire ses coûts de carburant.

  • Réduire le délai jusqu'à la destination: une opération de distribution de service peut vouloir réduire le temps nécessaire pour envoyer les opérateurs à une requête de tâche.

  • Réduire les coûts et améliorer la sécurité: une entreprise de partage de course peut souhaiter trouver un itinéraire moins cher pour les usagers et évitant certaines zones pour des raisons de sécurité.

Pour en savoir plus sur la planification d'une route à l'aide d'un jeton de route, consultez la section Demander un jeton de route.

Pourquoi utiliser un jeton de route pour les objectifs de route ?

Un jeton de route issu de l'API Routes ou Routes Preferred vous donne plus de contrôle sur la route fournie:

  • Planifiez un itinéraire à l'avance pour que le SDK Navigation l'utilise lorsque cela est possible.

  • Choisissez le meilleur itinéraire pour le SDK Navigation. Si vous demandez des jetons de routage lors de la génération de routes dans l'API Routes, vous obtenez un jeton de route pour chaque route générée. Vous pouvez ensuite choisir le jeton de l'itinéraire que vous souhaitez utiliser lorsque vous le transmettez au SDK Navigation.

  • Estimer le prix à l'avance, y compris l'estimation de l'heure d'arrivée prévue et de la distance. Bien que le coût et le temps réels puissent varier, cette estimation réduit l'écart entre le coût de l'itinéraire attendu et le coût réel.

  • Spécifiez des objectifs de route plus avancés, tels que le routage éco ou l'itinéraire le plus court.

Fonctionnement des jetons de routage de l'API Routes

Vous pouvez utiliser l'API Routes ou l'API Routes Preferred pour planifier un itinéraire à l'aide d'objectifs de route. L'API Routes renvoie un jeton d'itinéraire que vous pouvez transmettre au SDK Navigation pour guider l'itinéraire de votre véhicule.

Voici ce qui se passe lorsque vous demandez et utilisez un jeton de route à partir de l'API Routes:

  1. L'API Routes renvoie un jeton de route chiffré qui inclut la polyligne de route et les objectifs d'itinéraire.

  2. Vous transmettez le jeton d'itinéraire au SDK Navigation.

  3. Le SDK Navigation récupère l'itinéraire. Si l'itinéraire n'est pas disponible en raison de l'évolution des conditions, il récupère l'itinéraire le plus pertinent.

  4. Pendant la conduite de l'itinéraire, si le trafic ou d'autres conditions de la route changent, ou si un véhicule s'écarte de l'itinéraire prévu, les itinéraires modifiés tentent en permanence de faire correspondre le meilleur itinéraire en fonction des objectifs d'itinéraire du jeton.

Ce processus maximise la proximité entre l'itinéraire prévu et l'itinéraire prévu.

Pourquoi un itinéraire planifié peut ne pas être suivi exactement

Considérez votre itinéraire et vos objectifs d'itinéraire comme des consignes à suivre: ils ne sont pas normatifs. Vous pouvez constater une différence entre votre itinéraire planifié et celui fourni par la navigation guidée en raison de différences au niveau de l'état de la route, de votre point de départ ou d'autres paramètres qui ont changé depuis que vous avez créé l'itinéraire planifié. Cette différence peut entraîner une incohérence entre vos objectifs de distance et d'heure d'arrivée prévue, entre autres, entre vos objectifs de trajet prévus et réels.

Planifier une route à l'aide d'un jeton de route

Vous pouvez planifier un itinéraire en créant un jeton d'itinéraire, puis en le transmettant au SDK Navigation, comme décrit dans les étapes suivantes:

Étape 1: Créez un jeton de route à l'aide de l'API Routes ou Routes Preferred

  1. Demandez un jeton de route à l'aide de l'une des méthodes suivantes:

    • API Routes: computeRoutes. Pour en savoir plus sur la demande d'un jeton de route dans l'API Routes, consultez Calculer une route et Demander un jeton de route.

    • API Routes Preferred: computeCustomRoutes. Pour plus d'informations sur la demande d'un jeton de route dans l'API Routes Preferred, consultez la section Planifier une route.

  2. Configurez votre requête de routage pour répondre aux exigences d'utilisation d'un jeton de route:

    • Définissez travel_mode sur DRIVING.
    • Définissez routing_preference sur TRAFFIC_AWARE ou TRAFFIC_AWARE_OPTIMAL
    • NE PAS utiliser les points de cheminement Via

Étape 2: Transmettre le jeton d'itinéraire au SDK Navigation

  1. Stocker le jeton d'itinéraire: dans le SDK Navigation, configurez une chaîne pour stocker le jeton d'itinéraire. Exemple :

    String routeToken = "route token returned by Routes API";

    Exemple de jeton de route renvoyé:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Transmettez le jeton d'itinéraire au SDK Navigation à l'aide de la méthode Navigator.setDestinations, en spécifiant les mêmes points de cheminement de destination que ceux utilisés lors de la création du jeton d'itinéraire:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    Exemple :

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

La méthode Navigator.setDestinations renvoie l'état de la requête. S'il trouve un itinéraire entre la position du véhicule et la destination donnée, il renvoie RouteStatus.OK.

Pour en savoir plus sur cette méthode, consultez Navigator.setDestinations.

Exemple

L'exemple de code suivant montre comment spécifier un itinéraire planifié à l'aide d'un jeton de route.

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

Interactions des jetons d'itinéraire et du SDK Navigation

Voici comment l'itinéraire généré par le SDK Navigation et l'itinéraire planifié dans le jeton d'itinéraire interagissent:

  • Remplace toutes les destinations définies précédemment.

  • Utilise le lieu de départ du véhicule.

  • Elle s'ajuste en fonction des conditions de circulation et du trafic. Consultez la section Pourquoi un itinéraire planifié peut ne pas être suivi exactement.

  • Ignore les options de routage suivantes comme inutiles:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Suivis:

    • Options liées aux points de cheminement, telles que la préférence de sens de circulation

    • Objectifs de routage. Si le SDK Navigation doit ajuster l'itinéraire renvoyé, il utilise les objectifs d'itinéraire que vous avez spécifiés lors de la requête du jeton d'itinéraire. C'est pourquoi vous devez utiliser les mêmes options liées aux points de cheminement que celles que vous avez spécifiées dans l'API Routes.