Planifica una ruta

En ocasiones, es posible que desees planificar la ruta que tu app proporciona a los usuarios. Con un el token de ruta de la API de Routes (o la API de Routes Preferred) te puede ayudar a especificar dos cosas para la ruta planificada:

  • Una polilínea para la ruta

  • Tus objetivos de ruta

Por ejemplo, estos son algunos ejemplos de objetivos de enrutamiento que podrías tener:

  • Minimizar el tiempo de entrega: Una empresa que entrega alimentos podría querer minimizar el tiempo que lleva entregar la comida.

  • Minimiza 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 los costos de combustible.

  • Minimizar el tiempo hasta el destino: Una operación de despacho de servicios podría querer y minimizan el tiempo que tardan los operadores en llegar a una solicitud de trabajo.

  • Reduce los costos y mejora la seguridad: Es posible que una empresa de transporte compartido quiera encontrar una ruta que cuesta menos para los pasajeros y evita ciertas áreas por seguridad y otras razones.

Para obtener más información sobre cómo planificar una ruta con un token de ruta, consulta Solicita 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, tienes 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 las generas en la API de Routes, obtendrás un token de ruta para cada ruta generada. Luego, puedes elegir el token de la ruta que deseas usar cuando la pasas al SDK de Navigation.

  • Calcula el precio por adelantado, 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 rutas ecológicas o la duración más corta ruta.

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 usando objetivos de ruta. La API de Routes muestra un token de ruta que puedes pasar al SDK de Navigation para indicar cómo rutas a tu vehículo.

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

  1. La API de Routes muestra un token de ruta encriptado que incluye el nombre de polilínea y de ruta.

  2. Debes pasar el token de ruta al SDK de Navigation.

  3. El SDK de Navigation recupera la ruta, o si la ruta no está disponible debido al cambio de condiciones, recupera las mejores coincidencias ruta.

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

Este proceso maximiza qué tan cerca se encuentra 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 la ruta como lineamientos a seguir: no son prescriptivos. Es posible que veas una diferencia entre la ruta planificada y la ruta proporcionada por la navegación guiada debido a las diferencias en la ruta la ubicación inicial o cualquier otro parámetro que haya cambiado desde que creó la ruta planificada. Esta diferencia puede dar lugar a una discrepancia tus objetivos planificados y reales para la distancia y la hora de llegada estimada, entre otros viajes importantes cualidades.

Planificar una ruta con un token de ruta

Para planificar una ruta, crea un token de ruta y pásalo a el 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 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 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 una ruta. token:

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

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:

    String routeToken = "route token returned by Routes API";

    Ejemplo de un token de ruta devuelto:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Pasa el token de ruta al SDK de Navigation con el Método Navigator.setDestinations que especifica el mismo destino puntos de referencia que usaste para crear el token de ruta:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    Por ejemplo:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

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

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

Ejemplo

El siguiente ejemplo de código demuestra cómo especificar una ruta planificada con un token de ruta.

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

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

A continuación, te mostramos cómo la ruta generada por el SDK de Navigation y la versión ruta en el token de ruta interactúan:

  • Anula cualquier destino configurado anteriormente.

  • 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 exactamente una ruta planificada.

  • Ignora las siguientes opciones relacionadas con el enrutamiento como innecesarias:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Siguiendo:

    • Opciones relacionadas con puntos de referencia, como la preferencia de margen de la ruta

    • Objetivos de ruta. Si el SDK de Navigation ajusta la ruta devuelta; usa los objetivos de ruta que especificaste cuando solicitando el token de ruta. Por este motivo, debes usar el mismo opciones relacionadas con puntos de referencia que especificaste en la API de Routes.