Sorry, you need to enable JavaScript to visit this website.

Driving Extensions

Driving Extensions

This module is built on top of Maps SDK for Android and contains logic and helpful utils that can
be used in more complex scenarios, like driving or cycling.

To use this library, add the following dependency to the build.gradle file:

implementation("com.tomtom.online:sdk-maps-driving-extensions:2.4011")
Map and route matching

Map matching snaps inaccurate GPS probe to the road network obtained from map tiles so roads are
represented by collections of coordinates. Route matching is a special case of map matching which
snaps inaccurate GPS probe to the given route. The reference route is represented by a collection
of coordinates. The route can be calculated using the Routing API or provided manually.

Sample use case: You have a speed radar application that is used when driving. To have a proper
user experience, you want to match GPS positions with the road data obtained from map tiles.

Sample use case: You want to match/place the chevron with the the right road.

Sample use case: A user plans and displays a route on the map in your app. The vehicle position
is being matched along the planned route.

To create map matcher instance and register for updates:

matcher = MatcherFactory.createMatcher(tomtomMap.asMatchingDataProvider());
matcher.setMatcherListener(new ChevronMatcherUpdater(getChevron(), tomtomMap));

To create route matcher instance and register for updates:

matcher = MatcherFactory.createMatcher(LatLngTraceMatchingDataProvider.fromPoints(getFirstRouteFromMap()));
matcher.setMatcherListener(new ChevronMatcherUpdater(getChevron(), tomtomMap));

It is important to dispose matcher instance, once it is not going to be used. Otherwise memory leaks may occur:

matcher.dispose();

To update map matcher with new GPS position:

matcher.match(location);

To process map matcher results:

@Override
public void onMatched(MatchResult matchResult) {

    chevron.setDimmed(!matchResult.isMatched());
    chevron.setLocation(matchResult.getMatchedLocation());
    chevron.show();

    tomtomMap.getOverlaySettings().removeOverlays();
    tomtomMap.getOverlaySettings().addOverlay(
            CircleBuilder.create()
                    .position(new LatLng(matchResult.originalLocation))
                    .fill(GPS_DOT_FILL)
                    .color(GPS_DOT_COLOR)
                    .radius(GPS_DOT_RADIUS)
                    .build()
    );
}