Skip to main content

Direction Widget

A ready to use Fragment to show the Routes in an Android platform. It offers the following basic functionalities:

  1. Takes support of Mappls Place search for searching locations of origin, destinations and via points.
  2. It allows to use origin and destinations in Mappls digital address (semicolon separated) mapplsPin or WGS 84 geographical coordinates both.
  3. The ability to set the vehicle profile like driving, and biking.
  4. Easily set the resource for traffic and ETA information.

For more details, please contact apisupport@mappls.com.

Add the dependency

Add below dependency in your app-level build.gradle

implementation 'com.mappls.sdk:direction-ui:1.0.0'

Add your API keys to the SDK

Add your API keys to the SDK (in your application's onCreate() or before using map)

Java

MapplsAccountManager.getInstance().setRestAPIKey(getRestAPIKey());      
MapplsAccountManager.getInstance().setMapSDKKey(getMapSDKKey());
MapplsAccountManager.getInstance().setAtlasClientId(getAtlasClientId());
MapplsAccountManager.getInstance().setAtlasClientSecret(getAtlasClientSecret());

Kotlin

MapplsAccountManager.getInstance().restAPIKey = getRestAPIKey()     
MapplsAccountManager.getInstance().mapSDKKey = getMapSDKKey()
MapplsAccountManager.getInstance().atlasClientId = getAtlasClientId()
MapplsAccountManager.getInstance().atlasClientSecret = getAtlasClientSecret()

Add Direction Widget

Java

DirectionFragment directionFragment = DirectionFragment.newInstance();  

getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, directionFragment, DirectionFragment.class.getSimpleName())
.commit();

//OR
DirectionFragment directionFragment = DirectionFragment.newInstance(directionOptions);

getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, directionFragment, DirectionFragment.class.getSimpleName())
.commit();

Kotlin

val directionFragment: DirectionFragment = DirectionFragment.newInstance()  
supportFragmentManager.beginTransaction().add(R.id.fragment_container, directionFragment, DirectionFragment::class.java.simpleName)
.commit()

//OR
val directionFragment: DirectionFragment = DirectionFragment.newInstance(directionOptions)
supportFragmentManager.beginTransaction().add(R.id.fragment_container, placeAutocompleteFragment, PlaceAutocompleteFragment::class.java.simpleName)
.commit()

You can use DirectionOptions to set the properties of direction widget:

  1. resource(String): Below are the available resource:
  • DirectionsCriteria.RESOURCE_ROUTE (Default): to calculate a route & its duration without considering traffic conditions.
  • DirectionsCriteria.RESOURCE_ROUTE_ETA get the updated duration of a route considering live traffic; Applicable for India only "region=ind" and "rtype=1" is not supported. This is different from route_traffic; since this doesn't search for a route considering traffic, it only applies delays to the default route.
  • DirectionsCriteria.RESOURCE_ROUTE_TRAFFIC:
    to search for routes considering live traffic; Applicable for India only “region=ind” and “rtype=1” is not supported
  1. showAlternative(Boolean): Show alternative routes.
  2. profile(String): Below are the available profile:
  • DirectionsCriteria.PROFILE_DRIVING (Default):Meant for car routing
  • DirectionsCriteria.PROFILE_WALKING: Meant for pedestrian routing. Routing with this profile is restricted to route_adv only. region & rtype request parameters are not supported in pedestrian routing
  • DirectionsCriteria.PROFILE_BIKING:Meant for two-wheeler routing. Routing with this profile is restricted to route_adv only. region & rtype request parameters are not supported in two-wheeler routing.
  • DirectionsCriteria.PROFILE_TRUCKING:Meant for Truck routing. Routing with this profile is restricted to route_adv only. region & rtype request parameters are not supported in truck routing.
  1. overview(String): Add overview geometry either full, simplified according to highest zoom level it could be display on, or not at all. Below are the available value:
  • DirectionsCriteria.OVERVIEW_FULL
  • DirectionsCriteria.OVERVIEW_FALSE
  • DirectionsCriteria.OVERVIEW_SIMPLIFIED
  1. steps(Boolean): Return route steps for each route leg. Possible values are true/false. By default it will be used as false.
  2. excludes(List<String>) : Additive list of road classes to avoid, order does not matter. Below are the available value:
  • DirectionsCriteria.EXCLUDE_FERRY
  • DirectionsCriteria.EXCLUDE_MOTORWAY
  • DirectionsCriteria.EXCLUDE_TOLL
  1. showStartNavigation(Boolean): To show the Start Navigation button if the origin is current location.
  2. showDefaultMap(Boolean): To add the option to show default map
  3. destination(DirectionPoint): You can use DirectionPoint to pass the destination in direction widget:
  • setDirection(Point, String, String): It takes coordinate, place name and place address
  • setDirection(String, String, String): It takes mappls pin, place name and place address
  1. searchPlaceOption(PlaceOptions): To set the properties of search widget.

Additional Parameter - Search Along The Route

searchAlongRoute(Boolean) : An easy, ready to use UI has been introduced to search pois Along the route with default categories list.Default is true.

To access this parameter , please contact API Support This parameter takes the encoded route along which POIs will be searched.

This parameter is further having configurable options listed below.

  • alongRouteBuffer (Integer) : 200, // Buffer of the road. Minimum value is 25m, maximum is 1000m and default is 25m

CategoryCode: This class is used to set the information for the poi categories to show in Widget. It contains the following properties in constructor:

  • category (String): Name of the category that display on a view
  • icon(Integer): To show icon of category
  • categoryCode (List<String>): List of category codes
  • markerIcon (Integer): Marker icon to display on a map
  • isSelected (Boolean): To set the category is selected or not.
List<CategoryCode> categoryCodes = new ArrayList<>();  
List<String> coffeeCatgories = new ArrayList<>();
coffeeCatgories.add("FODCOF");
categoryCodes.add(new CategoryCode("Coffee", R.drawable.icon_coffee,coffeeCatgories, R.drawable.ic_map_coffee));
DirectionOptions directionOptions = DirectionOptions.builder()
.alongRouteBuffer(300)
.searchAlongRoute(true)
.build();
directionFragment = DirectionFragment.newInstance(directionOptions);
directionFragment.setCategoryCodes(categoryCodes);
addFragment(R.id.container, directionFragment, false, false);

To pass the MapView

directionFragment.provideMap(MapView)  

Callbacks getting from Direction Fagment

Implement from DirectionCallback interface:

directionFragment.setDirectionCallback(new DirectionCallback() {    
@Override
public void onCancel() {
//on Click of back button
}

@Override
public void onStartNavigation(DirectionPoint origin, DirectionPoint destination, List<DirectionPoint> waypoints, DirectionsResponse directionsResponse, int selectedIndex) {
//Get the origin, destination, waypoints, directionsResponse and the selected Index
}
});