> ## Content Index
> Fetch the complete content index at: https://blog.afi.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# GMPRO docs: Google Maps truck route / Large Vehicle Routing
- URL: https://blog.afi.io/blog/gmpro-docs-google-maps-truck-route-large-vehicle-routing/
- Published: 2026-08-21T05:01:49.000Z
- Updated: 2026-08-21T15:59:58.000Z
- Description: How to enable Google Maps truck route / Large Vehicle Routing (LVR) with the Route Optimization API.
- Author: Afian Anwar
- Tags: googlemaps

The most requested Google Maps feature for the past ten years is truck routing, the ability to use Google Maps to safely route large vehicles around narrow roads, low bridges and roads with truck restrictions, [such as parkways in New York and New Jersey](https://en.wikipedia.org/wiki/Parkways%5Fin%5FNew%5FYork?ref=blog.afi.io). It took a while, but it's finally here. In this post, I'll show you how to build a truck route with the Google Maps Route Optimization API's new [Large Vehicle Routing](https://developers.google.com/maps/tt/route-optimization/experimental/truck-routing/make-request?ref=blog.afi.io) (LVR) feature. We'll cover worked examples, pricing (spoiler: it's free with GMPRO), and what this all means for the navigation and routing software business.

![](https://storage.ghost.io/c/c6/4d/c64da7e8-63a6-4cff-acdc-2782a6ebc377/content/images/2026/08/Screenshot-2026-08-20-at-9.24.32---AM.png)

Part 1: [GMPRO: Google Maps Platform route optimization API](https://blog.afi.io/blog/gmpro-google-maps-platform-route-optimization-api/)  
Part 2: [GMPRO TSP solver: Google Maps with more than 25 waypoints](https://afi.io/blog/gmpro-tsp-solver-google-maps-with-more-than-25-waypoints/?ref=blog.afi.io)  
Part 3: [Google Maps route optimization: multi vehicle](https://afi.io/blog/google-maps-route-optimization-multi-vehicle/?ref=blog.afi.io)  
Part 4: [GMPRO fleet routing app - free route planner for multiple stops](https://afi.io/blog/fleet-routing-app-free-google-maps-route-planner-for-multiple-stops/?ref=blog.afi.io)  
Part 5: [GMPRO docs: Fixed vehicle costs](https://www.afi.io/blog/gmpro-docs-fixed-vehicle-costs/?ref=blog.afi.io)  
Part 6: [GMPRO docs: Territory optimization and route planning](https://www.afi.io/blog/gmpro-docs-territory-optimization-and-route-planning/?ref=blog.afi.io)  
Part 7: [GMPRO docs: Solving the VRP with route clustering and soft constraints](https://afi.io/blog/gmpro-docs-solving-the-vrp-with-route-clustering-and-soft-constraints/?ref=blog.afi.io)  
Part 8: [GMPRO docs: Driver load balancing with soft constraints](https://www.afi.io/blog/gmpro-docs-driver-load-balancing-with-soft-constraints/?ref=blog.afi.io)  
Part 9: [GMPRO docs: Driver breaks](https://www.afi.io/blog/gmpro-docs-driver-breaks/?ref=blog.afi.io)  
Part 10: [GMPRO docs: Complete deliveries before pickups in cargo bike logistics](https://www.afi.io/blog/gmpro-docs-complete-all-deliveries-before-pickups-in-cargo-bike-logistics/?ref=blog.afi.io)  
Part 11: [GMPRO docs: Force stop sequences using precedence rules](https://blog.afi.io/blog/gmpro-docs-force-stop-sequences-using-precedence-rules/)  
Part 12: [GMPRO docs: Cut cost / raise care with smart NEMT routing](https://blog.afi.io/blog/gmpro-docs-cut-cost-raise-care-with-smart-nemt-routing/)  
Part 13: [GMPRO docs: Routing for Demand Responsive Transport](https://blog.afi.io/blog/gmpro-docs-routing-for-demand-responsive-transport/)  
Part 14: [GMPRO docs: Squash durations and parking](https://blog.afi.io/blog/gmpro-docs-squash-durations-and-parking/)  
**Part 15: GMPRO docs: Use a Google Maps truck route with large vehicle routing (this article)**

### Why did Google Maps launch Large Vehicle Routing?

![Standard 4-wheeler (car) routing vs Large Vehicle Routing in New York City](https://storage.ghost.io/c/c6/4d/c64da7e8-63a6-4cff-acdc-2782a6ebc377/content/images/2026/08/image-10.png)

Standard 4-wheeler (car) routing vs Large Vehicle Routing in New York City

Large vehicles like trucks and buses face challenges that cars don't. Drivers must navigate low bridges, narrow tunnels, and tight turns, while operators plan around local, state, and national road regulations.

If you run a logistics company that moves goods by truck or other large vehicles, you can't let your drivers rely on the Google Maps app or the Google Maps APIs for routing and turn by turn navigation. The risk of being sent down a truck restricted road and getting fined, or worse, causing a serious accident, is too high.

Many commercial trucking companies already use Google Maps for general mapping, address validation, and route optimization. With this new Large Vehicle Routing feature, they no longer have to switch to a different app or navigation service for the actual driving, which unlocks a whole new market for Google Maps that was previously served by [HERE](https://www.here.com/multi-industry-lp-brand-2a?ref=blog.afi.io), [Tom Tom](https://www.tomtom.com/en%5Fgb/navigation/truck-gps-sat-nav/?ref=blog.afi.io) and [PC Miler](https://pcmilerweb.com/landing?returnUrl=%2Fapp&ref=blog.afi.io) (the industry leader in the US).

### Why use Google Maps truck route / Large Vehicle Routing?

Here are three very good reasons to use the new Google Maps Large Vehicle Routing feature.

1. **Improve pricing and planning accuracy.** Many logistics companies pay drivers by mileage. But the figure they use isn't the actual distance driven. It's the shortest route between stops, as calculated by Google Maps or a similar routing tool. The problem is that traditional routing algorithms are tuned for the routes and speeds of standard cars, so they ignore the factors that constrain large vehicles. Things like height limits, weight restrictions, and truck legal roads. As a result, the calculated mileage can differ substantially from what a driver actually covers, which causes disputes and general driver unhappiness.
2. **Avoid road hazards and keep your insurance costs down.** Large Vehicle Routing builds route plans that steer vehicles clear of low overhead clearances, weight-restricted roads, and other physical hazards.
3. **It's free (kind of).** Large Vehicle Routing is included in standard GMPRO pricing, which starts at $0.03 per shipment, so there's no extra charge to use it.

If you run a logistics operation with trucks or other large vehicles, Google Maps LVR is worth evaluating, especially if many of your drivers are new and unfamiliar with local roads and restrictions. [Contact me](https://www.afi.io/contact%5Fus?ref=blog.afi.io) for a demo and Google sponsored proof of concept.

### Google Maps truck route / Large Vehicle Routing worked example

Truck routing is supported in two Google Maps APIs: [Route Optimization](https://developers.google.com/maps/documentation/route-optimization?ref=blog.afi.io) (GMPRO) and [Routes](https://developers.google.com/maps/documentation/routes?ref=blog.afi.io). This article focuses specifically on adding truck routing to GMPRO. Here's what you need to do.

**Enable Large Vehicle Routing in your Google Cloud Console project**

To get LVR enabled on your Google Cloud Console, you can either [fill in the contact form](https://developers.google.com/maps/documentation/routes/contact?ref=blog.afi.io) or [reach out to me](https://www.afi.io/contact%5Fus?ref=blog.afi.io) directly. It's currently in GA but limited to the US, and Google is qualifying customers before granting access.

**Add Large Vehicle Routing to your standard GMPRO request**

![A GMPRO route with Large Vehicle Routing applied](https://storage.ghost.io/c/c6/4d/c64da7e8-63a6-4cff-acdc-2782a6ebc377/content/images/2026/08/Screenshot-2026-08-20-at-10.12.34---AM.png)

A GMPRO route with Large Vehicle Routing applied

In the `vehicles` object, set `travelMode` to "TRUCK" and add a `vehicleInfo` object that contains the physical specifications of the vehicle. For example, this is a typical setup for a tractor-trailer / semi (like [Optimus Prime](https://en.wikipedia.org/wiki/Optimus%5FPrime?ref=blog.afi.io)).

```
"vehicleInfo": {
  "totalAxleCount": 5,
  "totalHeightMm": 4114,
  "totalLengthMm": 21945,
  "totalWidthMm": 2590,
  "totalWeightKg": 36287,
  "trailerInfo": [{
    "lengthMm": 16154
  }]
}
```

The following table lists the properties available within the `vehicleInfo` object:

| **Field**                | **Type** | **Constraints** | **Description**                                                                              |
| ------------------------ | -------- | --------------- | -------------------------------------------------------------------------------------------- |
| totalHeightMm            | integer  | positive        | Total height of the vehicle, in millimeters.                                                 |
| totalWidthMm             | integer  | positive        | Total width of the vehicle, in millimeters.                                                  |
| totalLengthMm            | integer  | positive        | Total length of the vehicle, in millimeters.                                                 |
| totalWeightKg            | integer  | positive        | Total weight of the vehicle, in kilograms.                                                   |
| trailerInfo              | array    | \-              | Specifications for each trailer attached to the vehicle. Each element describes one trailer. |
| trailerInfo\[\].lengthMm | integer  | positive        | Length of an individual trailer, in millimeters.                                             |

And here's what a standard LVR GMPRO request looks like. This route takes you from the [Empire State Building](https://maps.app.goo.gl/X59GNMuvUcLvszEB9?ref=blog.afi.io) in New York City to the suburb of [Scarsdale, New York](https://maps.app.goo.gl/SHQZfkrA8GHPL4sn9?ref=blog.afi.io).

**Endpoint** `POST` [https://routeoptimization.googleapis.com/v1/projects/{PROJECT\_ID}:optimizeTours](https://routeoptimization.googleapis.com/v1/projects/PROJECT%5FNUMBER%5FOR%5FID:optimizeTours?ref=blog.afi.io)

**Headers**  
Content-Type: *application/json*  
Authorization: *Bearer $(`gcloud auth application-default print-access-token`)*

Note: Unlike most Google Maps Platform APIs where you append `?key=`, GMPRO uses IAM.You send a bearer access token, typically minted from a [service account ](https://docs.cloud.google.com/iam/docs/service-account-overview?ref=blog.afi.io)credential in production. Read [GMPRO TSP solver: Google Maps with more than 25 waypoints](https://afi.io/blog/gmpro-tsp-solver-google-maps-with-more-than-25-waypoints?ref=blog.afi.io) for step by step instructions on how to do this.

**Request**

```
{
    "model": {
      "shipments": [
        {
          "label": "Empire-State-Building",
          "deliveries": [
            {
              "arrivalLocation": {
                "latitude": 40.7484445,
                "longitude": -73.9882393
              },
              "timeWindows": [
                {
                  "startTime": "2026-06-06T09:00:00Z"
                }
              ],
              "duration": "60s"
            }
          ],
          "loadDemands": {
            "volume": {
              "amount": 4
            }
          }
        }
      ],
      "vehicles": [
        {
          "travelMode": "TRUCK",
          "routeModifiers": {
            "vehicleInfo": {
  "totalAxleCount": 5,
  "totalHeightMm": 4114,
  "totalLengthMm": 21945,
  "totalWidthMm": 2590,
  "totalWeightKg": 36287,
  "trailerInfo": [{
    "lengthMm": 16154
  }]
}
          },
          "loadLimits": {
            "volume": {
              "softMaxLoad": 20,
              "costPerUnitAboveSoftMax": 50
            }
          },
          "label": "truck-01",
          "startLocation": {
            "latitude": 40.9850862,
            "longitude": -73.7802697
          },
          "travelDurationMultiple": 1,
          "startTimeWindows": [
            {
              "startTime": "2026-06-06T09:00:00Z"
            }
          ],
          "costPerKilometer": 1
        }
      ],
      "globalStartTime": "2026-06-06T00:00:00+00:00",
      "globalEndTime": "2026-06-06T23:59:59+00:00"
    },
    "populatePolylines": true
  }
```

**Response**

```
{
    "routes": [
      {
        "vehicleLabel": "truck-01",
        "vehicleStartTime": "2026-06-06T09:00:00Z",
        "vehicleEndTime": "2026-06-06T10:25:17Z",
        "visits": [
          {
            "startTime": "2026-06-06T10:24:17Z",
            "detour": "0s",
            "shipmentLabel": "Empire-State-Building",
            "loadDemands": {
              "volume": {
                "amount": "-4"
              }
            },
            "visitType": "DELIVER_SHIPMENT"
          }
        ],
        "transitions": [
          {
            "travelDuration": "5057s",
            "travelDistanceMeters": 37978,
            "waitDuration": "0s",
            "totalDuration": "5057s",
            "startTime": "2026-06-06T09:00:00Z",
            "vehicleLoads": {
              "volume": {
                "amount": "4"
              }
            }
          },
          {
            "travelDuration": "0s",
            "waitDuration": "0s",
            "totalDuration": "0s",
            "startTime": "2026-06-06T10:25:17Z"
          }
        ],
        "routePolyline": {
          "points": "}{cyF~eiaMGCGAG@Ej@Eh@CTEXLJZP\\RRLRJj@Zp@\\J^JXBJDJDNLp@Jh@PTDj@D\\L|A?@Fj@QJy@f@A?KF?@SJMJA@KFA@MHKJIJGFEHCBCFGHABCHGNCJCJELCLAD?DEVIh@ALAD?@EXIt@AHG`@Ip@G`@Gh@EZCLAD?D..."
        },
        "routeToken": "CqYBCkQKKgoiChhtb2RlbC52ZWhpY2xlcy50cnVjay0wMRABGgQIABAAEgYKBAgAEAAaEgoQdHJ1Y2stMDEtZHVtbXktMDESXAoiChhFbXBpcmUtU3RhdGUtQnVpbGRpbmcQARoECAAQABIENDIyMBoQ2026MDYwNlQwOTAwMDBaKhBEVU1NWV9UT0tFTl9BRklfMDE4Ac2FGkQ6BJ",
        "metrics": {
          "performedShipmentCount": 1,
          "travelDuration": "5057s",
          "waitDuration": "0s",
          "delayDuration": "0s",
          "breakDuration": "0s",
          "visitDuration": "60s",
          "totalDuration": "5117s",
          "travelDistanceMeters": 37978,
          "maxLoads": {
            "volume": {
              "amount": "4"
            }
          },
          "performedMandatoryShipmentCount": 1
        },
        "routeCosts": {
          "model.vehicles.cost_per_kilometer": 37.978
        },
        "routeTotalCost": 37.978,
        "vehicleFullness": {
          "maxFullness": 0.0947610140928536,
          "maxLoad": 4.33680868994202e-19,
          "activeSpan": 0.0947610140928536
        }
      }
    ],
    "metrics": {
      "aggregatedRouteMetrics": {
        "performedShipmentCount": 1,
        "travelDuration": "5057s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "60s",
        "totalDuration": "5117s",
        "travelDistanceMeters": 37978,
        "maxLoads": {
          "volume": {
            "amount": "4"
          }
        },
        "performedMandatoryShipmentCount": 1
      },
      "usedVehicleCount": 1,
      "earliestVehicleStartTime": "2026-06-06T09:00:00Z",
      "latestVehicleEndTime": "2026-06-06T10:25:17Z",
      "totalCost": 37.978,
      "costs": {
        "model.vehicles.cost_per_kilometer": 37.978
      }
    }
  }
```

As expected, the `routePolyline` returned gives you a route that specifically avoids the [Henry Hudson Parkway](https://maps.app.goo.gl/MfXsrTVvse1exvJp9?ref=blog.afi.io) on the Upper West Side.

![Large Vehicle Routing avoids parkways in New York City and New Jersey](https://storage.ghost.io/c/c6/4d/c64da7e8-63a6-4cff-acdc-2782a6ebc377/content/images/2026/08/image-11.png)

Large Vehicle Routing avoids parkways in New York City and New Jersey

**Provide turn by turn navigation**

To send the route to your drivers, pass the `routeToken` from the response to the [Navigation SDK](https://mapsplatform.google.com/maps-products/navigation-sdk/?ref=blog.afi.io) in your driver app to start a navigation session (note: Navigation SDK pricing starts at $0.05 per destination, but there is no additional charge for using a LVR compatible route token).

The route the Navigation SDK follows can shift with traffic and road conditions, so it may sometimes diverge from the route the token describes. Whenever this happens (or when the driver leaves the planned route for whatever reason), the route token ensures that any recalculated route still respects the vehicle attributes set in the original GMPRO request.

### Google Maps Large Vehicle Routing pricing

Large Vehicle Routing doesn't cost extra. It's included with GMPRO at no charge beyond your existing usage. If your company already uses the Google Maps stack elsewhere, this is especially good news. Handing off a GMPRO route to in-vehicle navigation powered by a different mapping provider is tricky. The route GMPRO generated and the one shown in the app can disagree, with mismatched ETAs or stop sequences. Keeping the whole flow within Google Maps avoids that.

It also means one less set of vendors, contracts, and payment terms to manage. If Google is already an approved supplier and you're using GMPRO or the Routes API elsewhere in your system, enabling LVR, and passing its route token to the Navigation SDK, is an easy call.

For now, LVR is US only and still missing some features, such as truck toll pricing and speed limits. Even so, I expect the launch to pressure existing truck routing providers like [HERE](https://www.here.com/multi-industry-lp-brand-2a?ref=blog.afi.io) and [Tom Tom](https://www.tomtom.com/en%5Fgb/navigation/truck-gps-sat-nav/?ref=blog.afi.io), which are really only one sprint away from being swapped out, especially with coding assistance from LLMs.

### How I feel about Google Maps Large Vehicle Routing

I think it's a fantastic addition to the Google Maps API ecosystem. Truck routing was one of the last big features missing from the platform, and the product and engineering teams behind the Routes API and GMPRO have nailed the launch.

It took a long time to release, and for good reason. If Google Maps sends you on a detour and you're five minutes late to a meeting, you'd be annoyed, but that's about it. If LVR sends a semi into a bridge (see the videos of the [Canopener Bridge](https://11foot8.com/?ref=blog.afi.io) in Durham, North Carolina), that's a lawsuit waiting to happen.

Putting together the truck restriction data must have been difficult too. For US road regulations, a "truck" generally means a vehicle used commercially to haul goods that's heavy enough to face extra rules. Federal oversight kicks in around 10,000 lbs, and a commercial driver's license is required at 26,001 lbs. But many local restrictions, like the New York and New Jersey parkway bans define trucks by their commercial use and body type rather than weight, so there's no single national definition.

Finally, there's the algorithmic cost. Adding truck restrictions to a shortest path search is inherently slower. Standard routing is fast because it precomputes one shared road network and optimizes a single number, travel time. Truck routing can't. It has to treat the network as vehicle specific, check every road against several physical limits, reason about maneuvers like U-turns and left turns rather than just roads, and work with a larger search space to find a legal path.

[Afi Labs](http://www.afi.io/?ref=blog.afi.io) helped test an early version of Large Vehicle Routing with several of our customers. At first, GMPRO with Large Vehicle Routing enabled was too slow to be usable in production. So it's genuinely impressive that the Google Maps engineering team got the algorithm fast enough for a public launch in the second half of 2026.

**This article was written by** [**Afi Labs**](https://afi.io/?ref=blog.afi.io)**, a** [**Google Maps Premier Partner**](https://www.afi.io/?ref=blog.afi.io) **and reseller. We build route optimization, navigation, and fleet tracking software on Google Maps, and offer volume pricing on GMP licensing.** [**Talk to an engineer**](https://www.afi.io/contact%5Fus?ref=blog.afi.io) **or** [**follow Afian on LinkedIn**](https://www.linkedin.com/in/afian-anwar/?ref=blog.afi.io)**.**