Planifier un itinéraire

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

  • Une polyligne pour l'itinéraire

  • Vos objectifs d'itinéraire

Par exemple, voici quelques exemples d'objectifs de routage que vous pouvez avoir:

  • Réduire le délai de livraison: une entreprise qui livre des repas peut souhaiter réduire le temps nécessaire à la livraison.

  • Réduire 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.

  • Réduction du temps de destination: une opération de distribution des services peut souhaiter réduire le temps nécessaire pour diriger les opérateurs vers une requête de tâche.

  • Réduire les coûts et améliorer la sécurité: une entreprise de covoiturage 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'un itinéraire à l'aide d'un jeton de routage, consultez la section Demander un jeton de routage.

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

Avec un jeton de routage provenant de l'API Routes ou Routes Preferred, vous pouvez mieux contrôler la route fournie:

  • Planifiez un itinéraire à l'avance que le SDK Navigation pourra utiliser si 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 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.

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

  • Spécifiez des objectifs de route plus avancés, tels que le routage éco ou le routage 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 une route à l'aide d'objectifs de routage. L'API Routes renvoie un jeton d'itinéraire que vous pouvez transmettre au SDK Navigation pour guider la manière dont votre véhicule est acheminé.

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

  1. L'API Routes renvoie un jeton de routage chiffré qui inclut la polyligne et les objectifs de routage.

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

  3. Le SDK Navigation récupère l'itinéraire. Si celui-ci n'est pas disponible en raison de changements de conditions, il récupère le meilleur itinéraire.

  4. Pendant que vous suivez l'itinéraire, si le trafic ou d'autres conditions de circulation changent, ou si un véhicule dévie de l'itinéraire planifié, les itinéraires modifiés essaient continuellement de correspondre au meilleur itinéraire en fonction des objectifs d'itinéraire indiqués dans le jeton.

Ce processus maximise la proximité de l'itinéraire réel par rapport à l'itinéraire planifié.

Pourquoi un itinéraire planifié ne peut-il pas être suivi à la lettre ?

Considérez l'itinéraire planifié et les objectifs de l'itinéraire comme des lignes directrices à 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 des différences d'état de la route, du lieu de départ ou d'autres paramètres qui ont été modifiés depuis la création de l'itinéraire planifié. Cette différence peut entraîner une incohérence entre vos objectifs prévus et réels en matière de distance et d'heure d'arrivée prévue, ainsi que d'autres qualités de trajet importantes.

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

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 routage à l'aide de l'API Routes ou Routes Preferred

  1. Demandez un jeton de routage en utilisant 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 les sections Calculer une route et Demander un jeton de routage.

    • API Routes Preferred: computeCustomRoutes. Pour en savoir plus 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 routage:

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

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

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

    let routeToken = "route token returned by Routes API"

    Exemple de jeton de routage renvoyé:

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

    mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

La méthode Navigator.setDestinations renvoie l'état de la requête. Si un itinéraire est détecté entre la position de l'utilisateur et la destination donnée, il renvoie RouteStatus.OK.

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

Exemple

Les exemples de code suivants montrent comment récupérer un itinéraire planifié.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator setDestinations:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

Interactions entre les jetons de route et le 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

  • S'adapte aux conditions de circulation et à la circulation. Consultez Pourquoi un itinéraire planifié peut ne pas être suivi exactement.

  • Ignore les options de routage suivantes comme inutiles:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Éléments suivis:

    • Les options liées aux points de cheminement, telles que la préférence pour le côté de la route.

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