Mapbox React Native SDKs enable interactive maps and real-time, traffic-aware turn-by-turn navigation, dynamically adjusting routes to avoid congestion.
π Uses Mapbox navigation v3 SDK
π± Supports iOS, Android
π Various languages
π¨ Customizable
β Multiple Waypoints
π iOS CarPlay Support
iOS | Android |
iOS | Android |
# yarn
yarn add @pawan-pk/react-native-mapbox-navigation
# npm
npm install @pawan-pk/react-native-mapbox-navigation
Place your secret token in a .netrc file in your OS root directory.
machine api.mapbox.com
login mapbox
password <INSERT SECRET TOKEN>
Install pods
cd ios && pod install
Place your public token in your Xcode project's Info.plist
and add a MBXAccessToken
key whose value is your public access token.
Add the UIBackgroundModes
key to Info.plist
with audio
and location
if it is not already present. This will allow your app to deliver audible instructions while it is in the background or the device is locked.
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
<string>location</string>
</array>
Place your secret token in your android app's top level gradle.properties
or Β«USER_HOMEΒ»/.gradle/gradle.properties
file
MAPBOX_DOWNLOADS_TOKEN=<YOUR_MAPBOX_DOWNLOADS_TOKEN>
Open up your project-level build.gradle
file. Declare the Mapbox Downloads API's releases/maven
endpoint in the allprojects repositories
block.
allprojects {
repositories {
maven {
url 'https://api.mapbox.com/downloads/v2/releases/maven'
authentication {
basic(BasicAuthentication)
}
credentials {
// Do not change the username below.
// This should always be `mapbox` (not your username).
username = "mapbox"
// Use the secret token you stored in gradle.properties as the password
password = project.hasProperty('MAPBOX_DOWNLOADS_TOKEN') ?: ""
}
}
}
}
Add Resources
To do so create a new string resource file in your app module (e.g. app/src/main/res/values/mapbox_access_token.xml)
with your public Mapbox API token:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="mapbox_access_token" translatable="false" tools:ignore="UnusedResources">YOUR_MAPBOX_ACCESS_TOKEN</string>
</resources>
For more details installation you can read the Official docs of Mapbox.
import MapboxNavigation from '@pawan-pk/react-native-mapbox-navigation';
import { StyleSheet } from 'react-native';
export default function App() {
return (
<MapboxNavigation
startOrigin={{ latitude: 30.699239, longitude: 76.6905161 }}
destination={{ latitude: 30.6590196, longitude: 76.8185852 }}
waypoints={[
{ latitude: 30.726848, longitude: 76.733758 },
{ latitude: 30.738819, longitude: 76.757902 },
]}
style={styles.container}
shouldSimulateRoute={false}
showCancelButton={false}
language="en"
/>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
MapboxNavigation
PropsstartOrigin(Required)
(object): The starting point of the navigation. Should contain latitude and longitude keys.
destination(Required)
(object): The destination point of the navigation. Should contain latitude and longitude keys.
waypoints
(array): The waypoints for navigation points between startOrigin and destination. Should contains array of latitude and longitude keys.
style
(StyleObject): Custom styles for the navigation mapview.
shouldSimulateRoute
(boolean): [iOS Only] If true, simulates the route for testing purposes. Defaults to false
.
showCancelButton
(boolean): [Android Only] If true, shows a cancel button on the navigation screen. Defaults to false
.
language
(string): The language for the navigation instructions. Defaults to en
.
distanceUnit
('metric' | 'imperial'): Unit of direction and voice instructions (default is 'imperial')
onLocationChange
: Function that is called frequently during route navigation. It receives latitude
, longitude
, heading
and accuracy
as parameters that represent the current location during navigation.
onRouteProgressChange
: Function that is called frequently during route navigation. It receives distanceTraveled
, durationRemaining
, fractionTraveled
, and distanceRemaining
as parameters.
onError
: Function that is called whenever an error occurs. It receives a message
parameter that describes the error that occurred.
onCancelNavigation
: Function that is called whenever a user cancels navigation.
onArrive
: Function that is called when you arrive at the provided destination.
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT
Made with create-react-native-library