Choose an approach

The Mapbox Navigation SDK provides different ways to create a turn-by-turn navigation experience. Various approaches have their own benefits and limitations. This guide will walk you through the options and provide some guidance on how to get started with each.

Drop-in UI

Drop-In UI Developer Preview

Drop-In UI is currently in a Developer Preview state. The feature is actively worked on and might not be suited for a production deployment yet but we're excited to share it with the community and actively listening for your feedback.

If the requirement of your application is to build a turn-by-turn experience using UI components delivered with the Mapbox Navigation SDK, you can leverage the NavigationView which offers a pre-configured view to add to your application. Drop-In UI is a pre-made navigation layout which handles all stages of navigation and facilitates integration using few lines of code. The framework gives you enough customization options to keep your branding, and replace standalone Navigation UI components with custom made ones to support the unique needs of your use case.

Benefits:

  • Broad set of customizable options
  • Ability to replace UI components with your custom views
  • Inject custom views within specified constraints in the layout
  • Less effort to integrate a fully working navigation experience
  • Ability to inject MapView you have already been displaying elsewhere in your application

Limitations:

  • Limited option to pick and choose components
  • No option to change the positioning of the UI components

Add the dependency

dependencies {
  implementation "com.mapbox.navigation:ui-dropin:2.6.0"
}

The NavigationView class extends the Android View class. NavigationView is similar to the Maps SDK's MapView class in terms of creating a map and customizing it. The difference is that the navigation functionality is already built in and does not have to be added via the core Navigation SDK.

example
Add a complete turn-by-turn experience

Render a complete turn-by-turn experience using NavigationView.

Collection of standalone components

If you want to build a completely customizable turn-by-turn experience, you can use the Navigation SDK's standalone Core and UI components on top of the Maps SDK for Android's MapView. This approach may be appropriate if you'd like to define a custom business logic to get data or the need for more granular control on the look and appearance of the UI. For example, you could use the Core and UI components to define a custom behavior for requesting and showing alternative routes or control camera transitions.

Benefits:

  • Completely customizable
  • Ability to pick and choose the components relevant for your application

Limitations:

  • No out-of-the-box solution
  • Layout composition and state transitions are manual
  • More effort to integrate a fully working navigation experience

Build a collection of components

dependencies {
  implementation "com.mapbox.navigation:android:2.6.0"
}

The interplay of the Maps SDK's MapView and the navigation logic that's provided by the Navigation SDK's MapboxNavigation class, creates the most customizable approach to turn-by-turn navigation experiences. This combination brings together the MapView class, which allows for embedding highly customizable maps, and the full flexibility of the MapboxNavigation class. This allows you to customize every detail of the navigation experience without having to build it completely from scratch (using Mapbox APIs directly).

example
Add a complete turn-by-turn experience

Render a complete turn-by-turn experience using all relevant Navigation SDK APIs and pre-built UI components.