The Java library makes it easy to consume the Baato API into existing native android projects.
- Search
- Reverse Geocoding
- Places
- Directions
1.Open up your project's build.gradle file. Add the following code:
allprojects{
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
2.Open up your application's build.gradle file. Add the following code:
android {
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
dependencies {
implementation 'com.github.baato:java-client:${latest-version}'
}
new BaatoSearch(this)
.setAccessToken(YOUR_ACCESS_KEY)
.setQuery(query)
.setType("hospital") //optional parameter
.setAPIVersion("1") // optional, default will be "1" if not set
.setLimit(5) //optional parameter
.withListener(new BaatoSearch.BaatoSearchRequestListener() {
@Override
public void onSuccess(SearchAPIResponse places) {
// get the list of search results here
Log.d(TAG, "onSuccess:search " + places.toString());
}
@Override
public void onFailed(Throwable error) {
// get the error messages here
Log.d(TAG, "onFailed:search " + error.getMessage());
}
})
.doRequest();
new BaatoReverse(this)
.setLatLon(new LatLon(lat, lon))
.setAccessToken(YOUR_ACCESS_KEY)
.setLimit(5) //optional parameter
.withListener(new BaatoReverse.BaatoReverseRequestListener() {
@Override
public void onSuccess(PlaceAPIResponse places) {
// success response here
Log.d(TAG, "onSuccess: reverse " + places.toString());
}
@Override
public void onFailed(Throwable error) {
// failure response here
Log.d(TAG, "onFailed:reverse " + error.getMessage());
}
})
.doRequest();
new BaatoPlace(this)
.setAccessToken(YOUR_ACCESS_KEY)
.setPlaceId(placeId)
.withListener(new BaatoPlace.BaatoPlaceListener() {
@Override
public void onSuccess(PlaceAPIResponse place) {
//success response here
Log.d(TAG, "onSuccess: place" + place.toString());
}
@Override
public void onFailed(Throwable error) {
//failure response here
Log.d(TAG, "onFailed: place" + error.getMessage());
}
})
.doRequest();
String points[] = new String[]{"27.73405,85.33685", "27.7177,85.3278"};
new BaatoRouting(this)
.setPoints(points)
.setAccessToken(YOUR_ACCESS_KEY)
.setMode(mode) //eg bike, car, foot
.setAlternatives(false) //optional parameter
.setInstructions(true) //optional parameter
.withListener(new BaatoRouting.BaatoRoutingRequestListener() {
@Override
public void onSuccess(DirectionsAPIResponse directionResponse) {
// success response here
Log.d(TAG, "onSuccess: routes" + directionResponse.toString());
}
@Override
public void onFailed(Throwable error) {
// failure response here
Log.d(TAG, "onFailed:routes " + error.getMessage());
}
})
.doRequest();
Get the currentRoute from step no 4 and follow the below steps:
String parsedNavigationResponse = BaatoRouting.getParsedNavResponse(directionResponse, navigationMode);
DirectionsResponse directionsResponse = DirectionsResponse.fromJson(parsedNavigationResponse);
DirectionsRoute currentRoute = directionsResponse.routes().get(0);
BaatoRouting.getParsedNavResponse(response,navigationMode, Locale("en"), context, true )
Here a boolean value true
is forMaplibre compatible. If you use Baato's navigation SDK you can set it to false
.
Now that you have your route, you can use the Baato Navigation SDK for navigation.
Add the following dependencies to build.gradle in your android project
// baato navigation SDK
dependencies {
implementation 'com.github.baato.navigation-sdk:baato-navigation-android:${latest-version}'
implementation 'com.github.baato.navigation-sdk:baato-navigation-android-ui:${latest-version}'
}
You can now launch the navigation UI and navigate through your app.
boolean simulateRoute=false;
NavigationLauncherOptions options = NavigationLauncherOptions.builder()
.directionsRoute(currentRoute)
.shouldSimulateRoute(simulateRoute) // boolean value set true for simulation
.build();
NavigationLauncher.startNavigation(YourActivity.this, options);
- Retrofit - Used to handle API requests
- Maven - Dependency Management
- Graphhopper - Used to Handle navigation API response