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 d'itinéraire provenant des API Routes, Routes Preferred ou Route Optimization peut vous aider à spécifier deux éléments pour votre itinéraire planifié :

  • Polyligne de l'itinéraire

  • Vos objectifs d'itinéraire

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

  • Minimiser le délai de livraison : une entreprise de livraison de repas peut vouloir minimiser le temps nécessaire pour livrer les repas.

  • Minimiser le 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.

  • Minimiser le temps de trajet : une opération de répartition des services peut vouloir minimiser le temps nécessaire pour que les opérateurs répondent à une demande d'intervention.

  • Réduire les coûts et améliorer la sécurité : une entreprise de covoiturage peut vouloir trouver un itinéraire qui coûte moins cher aux passagers et qui évite certaines zones pour des raisons de sécurité.

Pour en savoir plus sur la planification d'un itinéraire à l'aide d'un jeton d'itinéraire, consultez Demander un jeton d'itinéraire dans l'API Routes et Transition Polylines and Route Tokens (Polylignes de transition et jetons d'itinéraire) dans l'API Route Optimization.

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

Avec un jeton d'itinéraire provenant des API Routes, Routes Preferred ou Route Optimization, vous avez plus de contrôle sur l'itinéraire fourni :

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

  • Choisissez le meilleur itinéraire à utiliser pour le SDK Navigation. Si vous demandez des jetons d'itinéraire lorsque vous générez des itinéraires dans l'API Routes, vous obtenez un jeton d'itinéraire pour chaque itinéraire généré. Vous pouvez ensuite choisir le jeton de l'itinéraire que vous souhaitez utiliser lorsque vous le transmettez au SDK Navigation.

  • Estimez le prix à l'avance, y compris l'estimation de l'heure d'arrivée 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 du trajet attendu et le coût réel.

  • Spécifiez des objectifs d'itinéraire plus avancés, comme l'itinéraire écologique ou le plus court.

Fonctionnement des jetons d'itinéraire

Vous pouvez utiliser l'API Routes, l'API Routes Preferred ou l'API Route Optimization pour planifier un itinéraire à l'aide d'objectifs d'itinéraire. Vous pouvez transmettre un jeton de route renvoyé par l'une de ces API au SDK Navigation pour guider la façon dont il calcule l'itinéraire de votre véhicule.

Voici ce qui se passe lorsque vous demandez et utilisez un jeton de route :

  1. L'API Routes, l'API Routes Preferred ou l'API Route Optimization renvoient un jeton d'itinéraire chiffré qui inclut la polyligne et les objectifs de l'itinéraire.

  2. Vous transmettez le jeton de route au SDK Navigation.

  3. Le SDK Navigation récupère l'itinéraire ou, si celui-ci n'est pas disponible en raison de conditions changeantes, il récupère l'itinéraire le plus adapté.

  4. Pendant le trajet, si le trafic ou les conditions de circulation changent, ou si un véhicule s'écarte de l'itinéraire prévu, les itinéraires modifiés tentent en permanence de correspondre au meilleur itinéraire en fonction des objectifs de l'itinéraire dans le jeton.

Ce processus permet de maximiser la proximité entre l'itinéraire réel et celui que vous avez planifié.

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

Considérez votre itinéraire planifié et vos objectifs d'itinéraire comme des consignes à suivre, et non comme des règles strictes. Il peut y avoir une différence entre l'itinéraire que vous avez planifié et celui fourni par la navigation guidée. Cela peut être dû à des différences dans les conditions de circulation, le 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 un écart entre vos objectifs planifiés et réels en termes de distance et d'heure d'arrivée prévue, entre autres qualités importantes du trajet.

Planifier un itinéraire à l'aide d'un jeton d'itinéraire

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 d'itinéraire à l'aide de l'API Routes, de l'API Routes Preferred ou de l'API Route Optimization

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

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

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

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

  1. Stockez le jeton de route : dans le SDK Navigation, configurez une chaîne pour stocker le jeton de route. Exemple :

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

    Exemple de jeton d'itinéraire renvoyé :

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

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

    Exemple :

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

La méthode Navigator.setDestinations renvoie l'état de la requête. Si elle trouve un itinéraire entre la position du véhicule et la destination indiquée, elle 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 d'itinéraire.

    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(TravelMode.DRIVING)
          .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);

Interaction entre les jetons de route et le SDK Navigation

Voici comment la route générée par le SDK Navigation et la route planifiée dans le jeton de route interagissent :

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

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

  • Elle s'adapte aux conditions de circulation et de route. Consultez Pourquoi un itinéraire planifié n'est pas toujours suivi exactement.

  • Ignore les options liées au routage suivantes, car elles ne sont pas nécessaires :

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Abonnés :

    • Options liées aux points de repère, comme la préférence pour le côté de la route.

    • Objectifs de l'itinéraire : 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 demande du jeton d'itinéraire. Pour cette raison, vous devez utiliser les mêmes options liées aux waypoints que celles que vous avez spécifiées dans l'API Routes.