Planifier un itinéraire

Il peut arriver que vous souhaitiez planifier l'itinéraire que votre application fournit aux utilisateurs. Avec un de l'API Routes (ou de l'API Routes Preferred) peut vous aider à spécifier deux choses 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 les délais de livraison: une entreprise livrant des repas peut souhaiter réduire au minimum le temps qu’il faut pour livrer la nourriture.

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

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

  • Réduire les coûts et renforcer la sécurité: une entreprise de covoiturage peut rechercher un itinéraire moins cher pour les usagers et évitant certaines zones pour des raisons de sécurité raisons.

Pour en savoir plus sur la planification d'un itinéraire à l'aide d'un jeton de route, consultez Demandez un jeton de route.

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

Avec un jeton de route provenant de l'API Routes ou Routes Preferred, vous disposez sur la route fournie:

  • Planifier un itinéraire à utiliser par le SDK Navigation dans la mesure du 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 pour l'itinéraire que vous souhaitez utiliser 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 d’itinéraire attendu et réel.

  • Spécifiez des objectifs d'itinéraire plus avancés, comme l'itinéraire éco ou le plus court via un routage réseau.

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 des objectifs d'itinéraire. L'API Routes renvoie un que vous pouvez transmettre au SDK Navigation pour indiquer à votre véhicule.

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

  1. L'API Routes renvoie un jeton de route chiffré incluant la route une polyligne et des 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, ou si l'itinéraire n'est pas disponible en fonction de l'évolution des conditions, il récupère la meilleure correspondance via un routage réseau.

  4. Pendant le trajet, si le trafic ou d'autres conditions de circulation changent, ou si lorsqu'un véhicule s'écarte de l'itinéraire prévu, les itinéraires modifiés tente de faire correspondre le meilleur itinéraire en fonction des objectifs de route dans le 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 directives à suivre : ne sont pas normatives. Vous constaterez peut-être une différence entre votre itinéraire planifié et l'itinéraire fourni par la navigation guidée en raison des différences de circulation les conditions, le point de départ ou d'autres paramètres qui ont changé depuis que vous créé la route planifiée. Cette différence peut entraîner une incohérence vos objectifs de distance et d'heure d'arrivée prévue, prévus et réels, entre autres qualités.

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

Vous pouvez planifier un itinéraire en créant un jeton de route, puis en le transmettant à le 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:

  2. Configurez votre demande d'itinéraire pour répondre aux exigences liées à l'utilisation d'un itinéraire. jeton:

    • 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 de route. 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 Navigator.setDestinations, spécifiant la même destination les points de cheminement que vous avez 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, la fonction 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 et le jeton de routage.

    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 prévu 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'ajuste en fonction des conditions de circulation et du trafic. Voir 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 ajuste l'itinéraire renvoyé, il utilise les objectifs d'itinéraire que vous avez spécifiés demandant le jeton de route. C'est pourquoi vous devez utiliser la même les options liées aux points de cheminement que vous avez spécifiées dans l'API Routes.