Fournir une navigation détaillée pour les grands véhicules

À qui s'adresse ce guide ? Lisez ce guide si vous êtes un développeur mobile chargé de créer l'expérience de navigation en cabine pour les conducteurs de camions ou d'autres grands véhicules.

Contenu de ce guide : ce guide explique comment emprunter un itinéraire spécifique aux camions, généré par l'API Routes ou l'API Route Optimization, et l'utiliser pour alimenter une session de navigation guidée avec le SDK Navigation.

Points abordés

Vous apprendrez à effectuer les tâches suivantes :

  • Utilisez un routeToken pour connecter la planification des itinéraires de backend à l'expérience de navigation dans l'application.
  • Configurez le SDK Navigation pour utiliser un itinéraire de camion prédéfini.
  • Découvrez comment les restrictions spécifiques aux camions s'affichent pour le conducteur dans l'UI.

Prérequis

Avant de commencer, vous devez remplir les conditions suivantes.

Configuration du projet

Votre projet Google Cloud doit être provisionné pour le routage de véhicules volumineux. Si vous utilisez des projets distincts pour l'API Routes et le SDK Navigation, ils doivent tous les deux être provisionnés en conséquence.

Générer un jeton de route

Vous devez d'abord générer un itinéraire en suivant les instructions du guide de génération d'itinéraires et d'ETA pour les camions. Le résultat de ce processus, un routeToken, est nécessaire pour effectuer les étapes de ce guide.

Conditions minimales requises

Votre application doit utiliser la version minimale requise du SDK Navigation :

  • Android : version 5.2.0 ou ultérieure
  • iOS : 5.4.0 ou version ultérieure

De plus, toutes les exigences relatives à l'utilisation du SDK Navigation s'appliquent :

Limites

Avant de commencer, vous devez connaître les limites et les exigences suivantes.

  • Disponibilité géographique : le calcul d'itinéraire pour les véhicules de grande taille n'est disponible que dans les 48 États contigus des États-Unis.
  • L'optimisation des tournées de véhicules de grande taille est une offre en version Preview. Les conducteurs ne doivent pas se fier uniquement aux itinéraires renvoyés par cette API pour assurer leur sécurité ou respecter la loi. Il n'est pas garanti que les itinéraires soient adaptés au véhicule. Les suivre peut exposer les conducteurs à des dangers tels que des ponts bas ou des routes où les grands véhicules sont interdits.
  • Itinéraires optimaux : Dans certains cas, l'API ne peut pas trouver d'itinéraire qui respecte entièrement les restrictions de voyage. Au lieu de cela, il renvoie un itinéraire "au mieux" qui peut toujours traverser des zones à accès restreint. La réponse de l'API Routes signale clairement ces itinéraires dans le champ routeRestrictionsPartiallyIgnored. Dans ces cas, planifiez soigneusement votre itinéraire, idéalement à l'aide d'autres sources de données. N'utilisez pas un itinéraire signalé comme source unique de vérité pour la planification ou la navigation.
  • Fonctionnalités non compatibles : nous nous efforçons d'ajouter d'autres fonctionnalités à cette offre, mais le calcul d'itinéraire pour les grands véhicules n'est pas compatible avec les éléments suivants :
    • Prix des péages pour les camions
    • Limitations de vitesse
    • Routage pour les matières dangereuses radioactives
  • Limites d'utilisation : toutes les requêtes sont soumises aux limites standard de requêtes par seconde (RPS).

Afficher une UI spécifique aux camions

Le SDK Navigation affiche automatiquement des avertissements visuels, appelés encarts d'itinéraire, sur la carte pour avertir les conducteurs des restrictions à venir pour les camions. Les encadrés sont affichés pour les restrictions qui font partie de l'itinéraire prévu, mais pas sur les autres routes à proximité.

Le SDK inclut des encadrés pour les restrictions suivantes :

Restriction Icône et texte de l'accroche Conditions d'affichage
Height Icône jaune de restriction de hauteur
Jaune : avertissement, votre véhicule est proche de la hauteur maximale autorisée
Icône rouge de restriction de hauteur
Rouge : votre véhicule dépasse la hauteur maximale autorisée
Un encadré jaune s'affiche lorsque la hauteur du véhicule est proche de la limite.
Carte avec un avertissement de restriction de hauteur
Une légende rouge s'affiche si l'itinéraire n'est pas conforme et ne respecte pas une limite de hauteur.
Carte avec un non-respect de la restriction de hauteur
Pondération Icône de restriction de poids Une info-bulle rouge s'affiche lorsque le poids du véhicule dépasse la limite autorisée sur la route.
Une carte avec une icône de restriction de poids
Camions interdits Icône "Camions interdits" Un panneau rouge s'affiche lorsque vous empruntez une section de route interdite aux camions.
Une carte avec une icône indiquant que les camions sont interdits
Marchandises dangereuses Icône de produits dangereux Une légende rouge s'affiche lorsque le chargement de matières dangereuses du véhicule est interdit sur un tronçon de route.
Carte avec une icône de produits dangereux

Workflow du jeton de route

Un routeToken est un instantané chiffré et sécurisé d'un itinéraire généré par l'API Routes. Il contient tous les détails de l'itinéraire, y compris le profil du véhicule utilisé pour le créer. L'utilisation d'un jeton permet de s'assurer que la session de navigation correspond à l'itinéraire que vous avez planifié sur votre backend.

Notez qu'une fois que le conducteur a commencé à naviguer, l'itinéraire présenté par le SDK Navigation peut changer en fonction du trafic et de l'état des routes. Dans certains cas, il peut s'écarter de l'itinéraire spécifié par le jeton d'itinéraire.

Dans ces cas, ainsi que dans le cas où le conducteur s'écarte de l'itinéraire prévu, l'utilisation du jeton d'itinéraire garantit que les itinéraires nouvellement recalculés respectent les attributs du véhicule tels qu'ils ont été configurés dans la requête Routes API d'origine.

Le workflow comprend les étapes suivantes :

  1. Votre backend demande un itinéraire pour poids lourds à l'API Routes.
  2. L'API Routes renvoie un routeToken.
  3. Votre backend envoie ce jeton à votre application mobile.
  4. L'application mobile transmet le routeToken au SDK Navigation pour démarrer le trajet.
  5. Le SDK Navigation gère tous les aspects de l'expérience de navigation guidée, y compris le recalcul de l'itinéraire si le conducteur s'écarte du chemin, tout en préservant les restrictions d'origine du véhicule.

Implémentation : démarrer un trajet spécifique aux camions

Pour lancer une session de navigation avec votre itinéraire pour poids lourds, vous devez transmettre le jeton d'itinéraire au navigateur.

Étape 1 : Obtenez le jeton de route

Votre application reçoit la chaîne routeToken de votre serveur backend.

Le code suivant est un exemple de jeton :

CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g

Étape 2 : Transmettez le jeton au navigateur

Fournissez le routeToken au navigateur lorsque vous définissez la destination du trajet. Le Navigation SDK utilise ensuite ce jeton pour tous les calculs d'itinéraire du trajet.

Notez que le SDK Navigation dispose d'une configuration TravelMode, qui doit être définie sur TravelMode.DRIVING. Cette configuration est distincte de la configuration travelMode dans l'API Routes, qui doit être définie sur TRUCK. La configuration de l'API Routes travelMode est encodée dans routeToken et indique au SDK Navigation d'afficher l'expérience et l'itinéraire spécifiques aux camions.

Android

Utilisez CustomRoutesOptions.builder() pour définir le jeton, puis transmettez-le à navigator.setDestinations().

// Obtain the routeToken string from your backend
val routeToken = "route token returned by Routes API"

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

// Specify the same destination used to create the route token
ArrayList <Waypoint> destinations = Lists.newArrayList();
val destination = Waypoint.builder()
    .setLatLng(10.0, 20.0)
    .setTitle("title")
    .setVehicleStopover(true)
    .build()
destinations.add(destination);

navigator.setDestinations(destinations, customRoutesOptions)

iOS

Transmettez le jeton d'itinéraire au SDK Navigation à l'aide de la méthode mapView.navigator setDestinations, en spécifiant les mêmes waypoints de destination que ceux utilisés lors de la création du jeton d'itinéraire :

// Obtain the routeToken string from your backend
let routeToken = "route token returned by Routes API"

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

Étapes suivantes