Frequently Asked Questions

Product details

Network

Data

UI Customization

Routing

Simulator

Workflows

Product details

Your app must implement a dialog with the Navigation SDK Terms of Service notice that each driver must accept. This dialog gives the driver the opportunity to agree with the Terms of Service. A text file of the terms is provided with the Navigation SDK. Use the NavigationApi.showTermsAndConditionsDialog method to display the dialog containing the terms.
Any languages supported by Google Maps Mobile are automatically available for the Navigation SDK. A device has a default system language and an app cannot change that setting; however, the app has access to over 70 languages.

Yes. Once started, the LocationListener continues to run in the background. Your app continues road snapping the position and maintains the bearing.

Yes. When a route is created or changed, the RouteChangeListener provides polylines.

No, the Navigation SDK does not require Google Maps Mobile to be installed on the device.
No, the Navigation SDK does not provide this feature at this time.
Yes. The traffic direction is available and displayed by default.
Which versions of the JDK does the Navigation SDK support?
The Navigation SDK supports LTS versions of Java SE that are actively supported by Oracle. These versions are listed as having Premier Support on the Oracle Java SE Support Roadmap.

Network

How does the Navigation SDK handle poor connectivity?
The Navigation SDK pre-caches the route for each journey. The pre-cached information includes routing information for 15-20 minutes, and route alternatives in case the driver deviates from the route. The Navigation SDK approximates position using the device GPS and sensors.
Is an offline mode available?
No, the Navigation SDK does not offer an offline mode at this time; however, the SDK does provide pre-cached information for a journey.

Data

Can I retrieve all of the stops/destinations in a journey before starting the route?

Yes. To retrieve the directions for a route, call Navigator.getRouteSegments().

Is turn-by-turn route guidance available at the start of a route?
Yes. The Navigation SDK provides a list of route segments. In addition, the driver can swipe through the directions card in the header to see each maneuver.
How is ETA communicated to the app users?

Use the following steps to give ETA information to app users:

  1. Retrieve the time and distance for all waypoints using Navigator.getTimeAndDistanceList().
  2. Forward this information to the client application as you do for the driver ETA.
Can the RoadSnappedLocationProvider be used to obtain the driver's current snapped location if navigation is not in the foreground?

Yes. The RoadSnappedLocationProvider runs in the background by default.

Does the Navigation SDK support geofencing?

No. In the context of navigation, remainingTimeOrdistanceChangeListener has an advantage over a geofence. The geofence might not account for road geometry, and might not be centered on the exact point to which the driver is navigating.

You can approximate this feature using remainingTimeOrdistanceChangeListener.

  1. Set the threshold to determine the frequency of the callbacks.
  2. Check the remaining distance to the destination.

For example, if you set the threshold to 100m, you receive a callback when the distance to the destination changes by 100m. As the distance decreases, you can update this threshold to a smaller value and receive more frequent callbacks. Then, inspect the remaining distance to determine if you are close enough to the pickup/drop-off location.

Can I disable notifications when the Navigation app is in the background?

Yes. Use Navigator.setHeadsUpNotificationEnabled to control notifications. This method has a boolean argument. FALSE disables notifications; TRUE enables notifications.

The transaction recorder tracks pickups and dropoffs with a unique ID, which Google logs for product analytics purposes. If you are a Mobility Services customer, Google recommends that you implement the NavigationTransactionRecorder to log a record of your transactions.

UI Customization

Can I color code the best route option?
No. Color coding a specific route option is not supported at this time.
Can the Navigation SDK show the ETA for the final destination?

Yes. Use the following methods:

  1. Retrieve the time and distance for all waypoints using Navigator.getTimeAndDistanceList().
  2. Hide the ETA of the current waypoint using NavigationFragment.setEtaCardEnabled(false).
  3. Render the final destination ETA.
How can I hide ETA updates?

You can disable ETA cards by calling navigationView.setEtaCardEnabled(false).

Which UI customizations are available for the header and footer cards?

Use StylingOptions to set the background color styling. To hide or show the header and footer, use the setHeaderEnabled and setFooterEnabled member functions of NavigationFragment.

Routing

Can I provide a specific route to a driver or remove alternative routes?
No. By default, multiple routes are provided and the fastest route has priority. You can affect the default route by adding preferences, such as "avoid highways and tolls," to your request. Adding waypoints also affects the route.
Can I show the app user a different label for the destination than the default destination location?

Yes. Create a Marker with a custom title for the destination and the latitude/longitude. The Navigation SDK displays the custom title and the coordinates on the NavigationMap.

Can I use the Navigation SDK to track deviations from a defined path?

Yes. Use Navigator.setRouteChangedListener to receive notifications when a route changes or a new route is recommended:

  1. Register a listener that checks the device position along the route using the Navigator.setRouteChangedListener method.
  2. Add code to the callback event handler, onRouteChanged:
    • Send a message to the app user with updated ETA and distance information.
    • Track the device's location.
    • [optional] Add other features required by your app to handle when the driver is off the prescribed route.
Can the driver exit navigation without completing the route?

Yes. Call the Navigator.stopGuidance() method to stop navigation.

Simulator

Does the simulator support route changes?

Yes. Call simulateLocationsAlongNewRoute to simulate a journey that includes a route change. The simulateLocationsAlongExistingRoute method ignores changes to the existing route.

Workflows

How do I dismiss the notification after closing an activity that contains a navigation fragment?

The navigation notification remains visible during navigation, when the activity is closed. When the vehicle arrives at the destination, navigation stops, and the notification disappears.

To handle clicks on the notification, use the Navigator.startGuidance(intent resumeIntent). The resume intent fires when the app user clicks the notification. Typically, the Navigator.startguidance(getIntent()) is called from the main Activity, which recalls the Activity when the app user clicks the notification.