Le SDK Navigation pour Android offre des moyens améliorés de spécifier des points de cheminement ou des points de navigation, ce qui permet d'obtenir un itinéraire plus précis et une meilleure expérience d'arrivée, en particulier pour les destinations comportant plusieurs entrées ou des points de navigation spécifiques. Vous pouvez définir un itinéraire vers des positions exactes à l'aide d'un navigationPointToken, qui est une chaîne encodant un lieu et un contexte d'itinéraire supplémentaire. Vous pouvez également combiner les coordonnées de latitude et de longitude avec un ID de lieu pour plus de contexte.
Arrière-plan
Avant la version 7.4, vous pouviez définir un Waypoint à l'aide de coordonnées de latitude et de longitude ou d'un ID de lieu. Bien que parfois efficace, le routage uniquement vers une latitude et une longitude peut parfois entraîner des points de dépose ou de prise en charge non optimaux, en particulier pour les grands sites, les parcs ou les bâtiments dotés de plusieurs entrées. Le résultat peut s'aligner sur le segment de route le plus proche, qui n'est pas forcément le point de navigation le plus pratique ou le plus correct.
Les options de point de cheminement améliorées permettent de résoudre ce problème en fournissant plus de contexte.
Utiliser un jeton de point de navigation
Pour obtenir l'itinéraire le plus précis vers des points de navigation spécifiques tels que des entrées, des quais de chargement ou des zones de prise en charge désignées, vous pouvez utiliser un navigationPointToken. Ce jeton est obtenu en appelant la méthode destinations de l'API Geocoding. Il représente un point de navigation routable spécifique associé à un lieu.
Pour spécifier un jeton de point de navigation :
- Obtenez un
navigationPointTokenà partir de la réponse de la méthode Destinations de l'API Geocoding. - Créez un
Waypointà l'aide de la méthodesetNavigationPointToken()dans le compilateur.
// Assuming 'navPointToken' is a String obtained from the destinations method of the Geocoding API
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithToken = Waypoint.builder()
.setTitle(destinationName)
.setNavigationPointToken(navPointToken)
.build();
// Use this waypoint in navigator.setDestinations()
Utiliser des jetons de point de navigation et des jetons d'itinéraire
Vous pouvez récupérer un jeton de point de navigation via l'API Geocoding, récupérer un jeton d'itinéraire à partir de l'API Routes, puis transmettre le jeton de point de navigation et le jeton d'itinéraire au SDK Navigation. Cela est utile dans des scénarios tels que le covoiturage ou la livraison, où vous utilisez l'API Routes pour calculer le prix d'un trajet et où vous souhaitez bénéficier de la précision d'un jeton de point de navigation.
Avec le jeton d'itinéraire, le SDK Navigation démarre la navigation sur l'itinéraire que vous avez utilisé pour calculer le prix. Cela réduit le risque que des itinéraires plus longs ou plus courts soient utilisés pour le trajet, ce qui peut créer des "chocs de prix".
Pour en savoir plus sur la spécification d'un emplacement à l'aide d'un jeton de point de navigation et la création d'un jeton d'itinéraire, consultez la documentation de l'API Routes. Consultez Planifier un itinéraire pour savoir comment planifier un itinéraire à l'aide d'un jeton de route.
Ce schéma montre comment une application de covoiturage ou de livraison utilise conjointement des jetons de point de navigation et des jetons d'itinéraire :
Combiner l'ID de lieu, la latitude et la longitude
À partir de la version 7.4, vous pouvez fournir à la fois un ID de lieu et des coordonnées de latitude et de longitude lorsque vous créez un Waypoint. Cette méthode est utile lorsque vous souhaitez spécifier un point précis (latitude/longitude) tout en fournissant le contexte du lieu global (ID de lieu). Cela permet au SDK Navigation de fournir une expérience d'arrivée plus riche en mettant en évidence le bâtiment de destination ou en affichant les points d'intérêt à proximité associés à l'ID de lieu.
// Assuming 'placeId' is the Place ID String
// Assuming 'lat' and 'lng' are the double values for latitude and longitude
// Assuming 'destinationName' is a String title for the waypoint
Waypoint waypointWithPlaceIdAndLatLng = Waypoint.builder()
.setTitle(destinationName)
.setPlaceIdString(placeId)
.setLatLng(lat, lng)
.build();
// Use this waypoint in navigator.setDestinations()
Remarques
Lorsque vous fournissez à la fois placeId et latlng :
- La route cible principalement le
latlngspécifié. - Le
placeIdest utilisé comme contexte pour améliorer l'expérience d'arrivée. - Création de remplacement : si le SDK détermine que le
placeIdfourni correspond à une caractéristique trop éloignée dulatlngdonné, leplaceIdsera ignoré. Dans ce scénario, l'itinéraire ne sera calculé que jusqu'àlatlng, et les améliorations de l'expérience d'arrivée spécifiques au lieu ne seront pas disponibles.
Résumé des configurations de points de cheminement valides
| Méthode | setLatLng() |
setPlaceIdString() |
setNavigationPointToken() |
Comportement du routage | Mise en avant de la destination |
|---|---|---|---|---|---|
| Coordonnées de latitude/longitude uniquement | set | manquantes | manquantes | Redirige vers le segment de route le plus proche des coordonnées définies | S'affiche si la destination peut être déduite avec un niveau de confiance élevé |
| ID de lieu uniquement | manquantes | set | manquantes | Itinéraires vers le point de navigation par défaut de l'ID de lieu | ID de lieu de départ |
| Jeton de point de navigation uniquement | manquantes | manquantes | set | Itinéraires vers le point de navigation précis représenté par le jeton | Destination de départ définie dans la requête d'origine de la méthode destinations de l'API Geocoding |
| Coordonnées de latitude/longitude et ID de lieu combinés | set | set | manquantes | Redirige vers le segment de route le plus proche des coordonnées définies | À partir de l'ID de lieu, mais pas s'il est trop éloigné des coordonnées de latitude/longitude |