Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
A veces, es posible que desees planificar la ruta que tu app proporciona a los usuarios. Usar un token de ruta de la API de Routes, la API de Routes Preferred o la API de Route Optimization puede ayudarte a especificar dos aspectos de tu ruta planificada:
Una polilínea para la ruta
Tus objetivos de ruta
Por ejemplo, estos son algunos objetivos de rutas que puedes tener:
Minimizar el tiempo de entrega: Una empresa que entrega comida podría querer minimizar el tiempo que tarda en entregarla.
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.
Minimizar el tiempo hasta el destino: Una operación de envío de servicios podría querer minimizar el tiempo que les toma a los operadores llegar a una solicitud de trabajo.
Reducir los costos y mejorar la seguridad: Una empresa de viajes compartidos podría querer encontrar una ruta que cueste menos para los pasajeros y evite ciertas áreas por motivos de seguridad.
Por qué usar un token de ruta para los objetivos de ruta
Con un token de ruta de la API de Routes, la API de Routes Preferred o la API de Route Optimization, tienes más control sobre la ruta proporcionada:
Planifica una ruta con anticipación para que el SDK de Navigation la use cuando sea posible.
Cómo elegir la mejor ruta para que la 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 de la ruta que quieras usar cuando se lo pases al SDK de Navigation.
Estima el precio por adelantado, incluidas las estimaciones de la ETA 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 la ruta ecológica o la ruta más corta.
Cómo funcionan los tokens de ruta
Puedes usar la API de Routes, la API de Routes Preferred o la API de Route Optimization para planificar una ruta con objetivos de ruta. Puedes pasar un token de ruta que devuelva cualquiera de estas APIs al SDK de Navigation para guiar la forma en que se genera la ruta de tu vehículo.
Esto es lo que sucede cuando solicitas y usas un token de ruta:
Las APIs de Routes, Routes Preferred o Route Optimization devuelven un token de ruta encriptado que incluye la polilínea y los objetivos de la ruta.
Pasas el token de ruta al SDK de Navigation.
El SDK de Navigation recupera la ruta o, si no está disponible debido a cambios en las condiciones, recupera la ruta que mejor coincide.
Mientras conduces por la ruta, si el tráfico o las condiciones de la ruta cambian, o si un vehículo se desvía de la ruta planificada, las rutas modificadas intentan continuamente coincidir con la mejor ruta según los objetivos de la ruta en el token.
Este proceso maximiza la cercanía de la ruta real a la ruta planificada.
Por qué es posible que no se siga una ruta planificada exactamente
Piensa en la ruta planificada y los objetivos de la ruta como lineamientos a seguir, no como instrucciones. Es posible que veas una diferencia entre la ruta planificada y la que proporciona la navegación guiada debido a diferencias en las condiciones de la ruta, la ubicación de inicio o cualquier otro parámetro que haya cambiado desde que creaste la ruta planificada. Esta diferencia puede generar una discrepancia entre tus objetivos planificados y reales para la distancia y la ETA, entre otras cualidades importantes del viaje.
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, la API de Routes Preferred o la API de Route Optimization
Solicita un token de ruta con uno de los siguientes métodos:
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.
API de Route Optimization: optimizeTours o batchOptimizeTours. Para obtener más información sobre cómo solicitar un token de ruta en la API de Route Optimization, consulta Polilíneas de transición y tokens de ruta.
Configura tu solicitud a la API de Routes o a la API de Routes Preferred para cumplir con los requisitos para usar un token de ruta:
Establece travel_mode en DRIVING o TWO_WHEELER
Establece routing_preference en TRAFFIC_AWARE o TRAFFIC_AWARE_OPTIMAL
NO uses puntos de referencia Via
Paso 2: Pasa el token de ruta al SDK de Navigation
Almacena el token de ruta: En el SDK de Navigation, configura una cadena para almacenar el token de ruta. Por ejemplo:
letrouteToken="route token returned by Routes API"
Ejemplo de un token de ruta devuelto:
{// Other fields"routeToken":"CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",}
Pasa el token de ruta al SDK de Navigation con el método mapView.navigator setDestinations, especificando los mismos puntos de referencia de destino que usaste cuando creaste el token de ruta:
El método Navigator.setDestinations devuelve el estado de la solicitud.
Si se encuentra una ruta desde la ubicación del usuario hasta el destino determinado, se devuelveRouteStatus.OK.
En los siguientes ejemplos de código, se muestra cómo recuperar una ruta planificada.
Swift
letlocation=CLLocationCoordinate2D(latitude:47.67,longitude:-122.20)letwaypoint1=GMSNavigationWaypoint(location:location,title:"waypoint from location")!letwaypoint2=GMSNavigationWaypoint(placeID:"samplePlaceID",title:"waypoint from Place ID")!letrouteToken="route token returned by Routes API"mapView.navigator?.setDestinations([waypoint1,waypoint2],routeToken:routeToken,callback:{...})
Objective-C
CLLocationCoordinate2Dlocation=CLLocationCoordinate2DMake(47.67,-122.20);GMSNavigationWaypoint*waypoint1=[[GMSNavigationWaypointalloc]initWithLocation:coordinatetitle:@"waypoint from location"];GMSNavigationWaypoint*waypoint2=[[GMSNavigationWaypointalloc]initWithPlaceID:@"samplePlaceID"title:@"waypoint from Place ID"];NSString*routeToken=@"route token returned by Routes API";[mapView.navigatorsetDestinations:@[waypoint1,waypoint2]routeToken:routeTokencallback:^(GMSRouteStatusrouteStatus){...}];
Cómo interactúan los tokens de ruta y el SDK de Navigation
Así es como interactúan la ruta generada por el SDK de Navigation y la ruta planificada en el token de ruta:
Ignora las siguientes opciones relacionadas con el enrutamiento como innecesarias:
avoidsHighways
avoidsTolls
avoidsFerries
licensePlateRestriction
Seguidores:
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 devuelta, usa 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.
[null,null,["Última actualización: 2025-08-31 (UTC)"],[[["\u003cp\u003eRoute tokens let you plan routes in advance, optimizing for factors like time, fuel, or safety, and can be generated using the Routes, Routes Preferred, or Route Optimization API.\u003c/p\u003e\n"],["\u003cp\u003eWhile the Navigation SDK attempts to follow the planned route, real-world conditions may cause deviations; it dynamically adjusts while prioritizing the specified route objectives.\u003c/p\u003e\n"],["\u003cp\u003eYou create a route token via the Routes, Routes Preferred, or Route Optimization API, then pass it to the Navigation SDK's \u003ccode\u003esetDestinations\u003c/code\u003e method alongside your waypoints.\u003c/p\u003e\n"],["\u003cp\u003eThe Navigation SDK prioritizes the route token's plan but dynamically adapts to real-time conditions, potentially leading to variations between the planned and actual route.\u003c/p\u003e\n"],["\u003cp\u003eAlways request a fresh route token for each trip and anticipate potential route adjustments to ensure smooth navigation and accurate estimations.\u003c/p\u003e\n"]]],[],null,["# Plan a route\n\nAt times, you might want to plan the route your app provides to users. Using a\nroute token from the Routes API,\nRoutes Preferred API, or Route Optimization API can\nhelp you specify two things for your planned route:\n\n- A polyline for the route\n\n- Your route objectives\n\nFor example, here are some examples of routing objectives you may have:\n\n- **Minimize time to delivery**: A business delivering food might want to\n minimize the time it takes to deliver the food.\n\n- **Minimize travel time or fuel consumption**: A logistics business might\n want to improve the efficiency of their drivers and reduce their fuel costs.\n\n- **Minimize time to destination**: A service dispatch operation might want to\n minimize the time it takes to get operators to a job request.\n\n- **Lower costs and improve safety**: A ride-sharing business might want to\n find a route that costs less for riders and avoids certain areas for safety\n reasons.\n\n| **Important:** The actual route traveled may vary from the planned route provided by the token. Changing traffic, road conditions, or the vehicle deviating from the given route can result in route changes. As changes occur, the Navigation SDK continually attempts to return to the planned route, or if returning is impractical, follows the route objectives in the route token.\n\nFor more information about planning a route using a route token, see [Request a\nroute token](/maps/documentation/routes/choose_fields#route-token) in\nRoutes API and [Transition Polylines and Route\nTokens](/maps/documentation/route-optimization/polylines-and-route-tokens) in\nRoute Optimization API.\n\nWhy use a route token for route objectives\n------------------------------------------\n\nWith a route token from the Routes API,\nRoutes Preferred API, or Route Optimization API, you\nhave more control over the route provided:\n\n- **Plan a route in advance** for the Navigation SDK to use when\n possible.\n\n- **Choose the best route for the Navigation SDK to use**. If you\n request route tokens when generating routes in the Routes API,\n you get a route token for each generated route. You can then choose the\n token for the route you want to use when you pass it to the\n Navigation SDK.\n\n- **Estimate the price in advance**, including estimations for ETA and\n distance. While the actual cost and time might vary, this estimation reduces\n the gap between expected and actual route cost.\n\n- **Specify more advanced route objectives**, such as eco routing or the\n shortest route.\n\n| **Tip:** A route token is for one specific origin and destination and at a particular time. You must make a new Routes API, Routes Preferred API, or Route Optimization API request for a new route token.\n\nHow route tokens work\n---------------------\n\nYou can use the Routes API, Routes Preferred API, or\nRoute Optimization API to plan a route using route objectives. You\ncan pass a route token returned from any of these APIs to the\nNavigation SDK to guide how it routes your vehicle.\n\nHere's what happens when you request and use a route token:\n\n1. The Routes API, Routes Preferred API, or\n Route Optimization API returns an encrypted route token that\n includes the route polyline and route objectives.\n\n2. You pass the route token to the Navigation SDK.\n\n3. The Navigation SDK retrieves the route, or if the route is not\n available due to changing conditions, it retrieves the best matching route.\n\n4. While driving the route, if traffic or other road conditions change, or if a\n vehicle deviates from the planned route, the modified routes continually\n attempt to match the best route based on the route objectives in the token.\n\nThis process maximizes how close the actual route is to your planned route.\n\n### Why a planned route may not be followed exactly\n\nThink of your planned route and route objectives as guidelines to follow: they\nare not prescriptive. You might see a difference between your planned route and\nthe route provided by guided navigation due to differences in the road\nconditions, starting location, or other parameters that have changed since you\ncreated the planned route. This difference might result in a mismatch between\nyour planned and actual goals for distance and ETA, among other important trip\nqualities.\n| **Tip:** As a best practice, always request a new route token every time you set the destination in the Navigation SDK, and plan for some variation to avoid any impact to your business.\n\nPlan a route using a route token\n--------------------------------\n\nYou can plan a route by creating a route token and then passing it to the\nNavigation SDK, as described in the following steps:\n\n### Step 1: Create a route token using the Routes API, Routes Preferred API, or Route Optimization API\n\n1. **Request a route token** with one of the following methods:\n\n - **Routes API** : `computeRoutes`. For more information\n about requesting a route token in the Routes API, see\n [Compute a route](/maps/documentation/routes/compute_route_directions)\n and [Request a route\n token](/maps/documentation/routes/choose_fields#route-token).\n\n - **Routes Preferred API** : `computeCustomRoutes`. For more\n information about requesting a route token in the\n Routes Preferred API, see [Plan a\n route](/maps/documentation/routes_preferred/custom_routes).\n\n - **Route Optimization API** : `optimizeTours` or\n `batchOptimizeTours`. For more information about requesting a route\n token in the Route Optimization API, see [Transition Polylines and Route\n Tokens](/maps/documentation/route-optimization/polylines-and-route-tokens).\n\n2. **Set up your Routes API or Routes Preferred API\n request** to meet the requirements for using a route token:\n\n - Set `travel_mode` to `DRIVING` or `TWO_WHEELER`\n - Set `routing_preference` to `TRAFFIC_AWARE` or `TRAFFIC_AWARE_OPTIMAL`\n - Do NOT use `Via` waypoints\n\n### Step 2: Pass the route token to the Navigation SDK\n\n1. **Store the route token**: In the Navigation SDK, set up a string\n to store the route token. For example:\n\n let routeToken = \"route token returned by Routes API\"\n\n Example of a returned route token: \n\n {\n // Other fields\n \"routeToken\": \"CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g\",\n }\n\n2. **Pass the route token** to the Navigation SDK using the\n `mapView.navigator setDestinations` method, specifying the same destination\n waypoints that you used when creating the route token:\n\n mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})\n\n| **Note:** If you need to travel the same route again, request a new route token.\n\nThe `Navigator.setDestinations` method returns the status of the request.\nIf a route is found from the user's location to the given destination,\nit returns`RouteStatus.OK`.\n\nFor more information about this method, see\n[`GMSNavigator.setDestinations`](/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigator#-setdestinations:callback:).\n\n### Example\n\nThe following code examples demonstrate how to retrieve a planned route.\n\n\u003cbr /\u003e\n\n### Swift\n\n\u003cbr /\u003e\n\n let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)\n let waypoint1 = GMSNavigationWaypoint(location: location, title: \"waypoint from location\")!\n let waypoint2 = GMSNavigationWaypoint(placeID: \"samplePlaceID\", title: \"waypoint from Place ID\")!\n\n let routeToken = \"route token returned by Routes API\"\n mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})\n\n\u003cbr /\u003e\n\n### Objective-C\n\n\u003cbr /\u003e\n\n CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);\n GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@\"waypoint from location\"];\n GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@\"samplePlaceID\"\n title:@\"waypoint from Place ID\"];\n NSString *routeToken = @\"route token returned by Routes API\";\n\n [mapView.navigator setDestinations:@[waypoint1, waypoint2]\n routeToken:routeToken\n callback:^(GMSRouteStatus routeStatus){...}];\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nHow route tokens and the Navigation SDK interact\n------------------------------------------------\n\nHere's how the route generated by the Navigation SDK and the planned\nroute in the route token interact:\n\n- **Overrides** any previously-set destinations.\n\n- **Uses** the vehicle starting location.\n\n- **Adjusts** for road and traffic conditions. See\n [Why a planned route might not be followed exactly](#not-followed).\n\n- **Ignores** the following routing-related options as unneeded:\n\n - `avoidsHighways`\n - `avoidsTolls`\n - `avoidsFerries`\n - `licensePlateRestriction`\n- **Follows**:\n\n - **Waypoint-related options**, such as the side-of-road preference.\n\n - **Route objectives**. If the Navigation SDK has to\n adjust the returned route, it uses the route objectives you specified when\n requesting the route token. For this reason, you should use the same\n waypoint-related options that you specified in Routes API."]]