Planifica una ruta

En ocasiones, es posible que desees planificar la ruta que tu app ofrece a los conductores. El uso de un token de ruta de la API de Routes (o la API de Routes Preferred) puede ayudarte a especificar dos aspectos para la ruta planificada:

  • Una polilínea para la ruta

  • Tus objetivos de ruta

Estos son algunos ejemplos de los objetivos de enrutamiento que podrías tener:

  • Minimiza el tiempo de entrega: Es posible que una empresa que entrega comida quiera minimizar el tiempo que lleva entregar la comida.

  • Minimizar el tiempo de viaje o el consumo de combustible: Una empresa de logística podría querer mejorar la eficiencia de sus conductores y reducir sus costos de combustible.

  • Minimiza el tiempo hasta el destino: En una operación de envío de servicios, es posible que se quiera minimizar el tiempo que lleva lograr que los operadores lleguen a una solicitud de trabajo.

  • Disminuir los costos y mejorar la seguridad: En una empresa de transporte compartido, podría ser conveniente encontrar una ruta que cueste menos para los pasajeros y que evite ciertas áreas por motivos de seguridad.

Para obtener más información sobre cómo planificar una ruta con un token de ruta, consulta Cómo solicitar un token de ruta.

Por qué usar un token de ruta para los objetivos de ruta

Con un token de ruta de la API de Routes o Routes Preferred, tendrás más control sobre la ruta proporcionada:

  • Planifica una ruta con anticipación para que la use el SDK de Navigation cuando sea posible.

  • Elige la mejor ruta para que use el SDK de Navigation. Si solicitas tokens de ruta cuando generas rutas en la API de Routes, obtendrás un token de ruta para cada ruta generada. Luego, puedes elegir el token para la ruta que deseas usar cuando lo pases al SDK de Navigation.

  • Calcula el precio con anticipación, incluidas las estimaciones de la hora de llegada estimada y la distancia. Si bien el costo y el tiempo reales pueden variar, esta estimación reduce la brecha entre el costo esperado y el real de la ruta.

  • Especifica objetivos de ruta más avanzados, como las rutas ecológicas o la ruta más corta.

Cómo funcionan los tokens de ruta de la API de Routes

Puedes usar la API de Routes o la API de Routes Preferred para planificar una ruta con objetivos de ruta. La API de Routes muestra un token de ruta que puedes pasar al SDK de Navigation para guiar la ruta en tu vehículo.

Esto es lo que sucede cuando solicitas y usas un token de ruta de la API de Routes:

  1. La API de Routes muestra un token de ruta encriptado que incluye la polilínea y los objetivos de ruta.

  2. Pasas el token de ruta al SDK de Navigation.

  3. El SDK de Navigation recupera la ruta o, si no está disponible debido a cambios en las condiciones, recupera la ruta que coincide mejor.

  4. Mientras conduces la ruta, si el tráfico o las condiciones de otras rutas cambian, o si un vehículo se desvía de la ruta planificada, las rutas modificadas intentan coincidir continuamente con la mejor ruta según los objetivos de ruta incluidos en el token.

Este proceso maximiza qué tan cerca está la ruta real de la ruta planificada.

Por qué es posible que no se siga exactamente una ruta planificada

Piensa en la ruta planificada y en los objetivos de las rutas como lineamientos que debes seguir: no son prescriptivos. Es posible que veas una diferencia entre tu ruta planificada y la que proporciona la navegación guiada debido a diferencias en las condiciones de la ruta, la ubicación de partida y otros parámetros que cambiaron desde que creaste la ruta planificada. Esta diferencia puede generar una discrepancia entre tus objetivos planificados y reales para la distancia y la hora de llegada estimada, entre otras calidades de viajes importantes.

Planifica una ruta con un token de ruta

Para planificar una ruta, crea un token de ruta y, luego, pásalo al SDK de Navigation, como se describe en los siguientes pasos:

Paso 1: Crea un token de ruta con la API de Routes o Routes Preferred

  1. Solicita un token de ruta con uno de los siguientes métodos:

    • API de Routes: computeRoutes. Para obtener más información sobre cómo solicitar un token de ruta en la API de Routes, consulta Calcula una ruta y Solicita un token de ruta.

    • API de Routes Preferred: computeCustomRoutes. Para obtener más información sobre cómo solicitar un token de ruta en la API de Routes Preferred, consulta Planifica una ruta.

  2. Configura tu solicitud de ruta para cumplir con los requisitos de uso de un token de ruta:

    • Configura travel_mode en DRIVING.
    • Establece routing_preference en TRAFFIC_AWARE o TRAFFIC_AWARE_OPTIMAL.
    • NO usar puntos de referencia de Via

Paso 2: Pasa el token de ruta al SDK de Navigation

  1. Almacena el token de ruta: En el SDK de Navigation, configura una cadena para almacenar el token de ruta. Por ejemplo:

    let routeToken = "route token returned by Routes API"

    Ejemplo de un token de ruta que se muestra:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Pasa el token de ruta al SDK de Navigation con el método mapView.navigator setDestinations y especifica los mismos puntos de referencia de destino que usaste cuando creaste el token de ruta:

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

El método Navigator.setDestinations muestra el estado de la solicitud. Si se encuentra una ruta desde la ubicación del usuario hasta el destino determinado, se muestra RouteStatus.OK.

Para obtener más información sobre este método, consulta Navigator.setDestinations.

Ejemplo

En los siguientes ejemplos de código, se muestra cómo recuperar una ruta planificada.

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){...}];

Cómo interactúan los tokens de ruta y el SDK de Navigation

A continuación, se muestra cómo interactúan la ruta generada por el SDK de Navigation y la ruta planificada en el token de ruta:

  • Anula cualquier destino configurado con anterioridad.

  • Usa la ubicación de partida del vehículo.

  • Se ajusta a las condiciones de la ruta y del tráfico. Consulta Por qué es posible que no se siga una ruta planificada de forma exacta.

  • Ignora las siguientes opciones relacionadas con el enrutamiento según sean innecesarias:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Sigue a:

    • Opciones relacionadas con el punto de referencia, como la preferencia de lado de la ruta

    • Objetivos de ruta. Si el SDK de Navigation debe ajustar la ruta que se muestra, utiliza los objetivos de ruta que especificaste cuando solicitaste el token de ruta. Por este motivo, debes usar las mismas opciones relacionadas con los puntos de referencia que especificaste en la API de Routes.