À 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
routeTokenpour 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 |
Jaune : avertissement, votre véhicule est proche de la hauteur maximale autorisée
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.
Une légende rouge s'affiche si l'itinéraire n'est pas conforme et ne respecte pas une limite de hauteur.
|
| Pondération |
|
Une info-bulle rouge s'affiche lorsque le poids du véhicule dépasse la limite autorisée sur la route.
|
| Camions interdits |
|
Un panneau rouge s'affiche lorsque vous empruntez une section de route interdite aux camions.
|
| Marchandises dangereuses |
|
Une légende rouge s'affiche lorsque le chargement de matières dangereuses du véhicule est interdit sur un tronçon de route.
|
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 :
- Votre backend demande un itinéraire pour poids lourds à l'API Routes.
- L'API Routes renvoie un
routeToken. - Votre backend envoie ce jeton à votre application mobile.
- L'application mobile transmet le
routeTokenau SDK Navigation pour démarrer le trajet. - 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
- Découvrez les SDK : SDK Navigation pour Android | SDK Navigation pour iOS
- Personnaliser l'UI : découvrez comment personnaliser l'UI du SDK Navigation.