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

Map Driving Extension

Map Driving Extension

The TomTomOnlineSDKMapsDriving

Map and route matching

This module is built on top of Maps SDK for iOS 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 Podfile file:

pod 'TomTomOnlineSDKMapsDriving'
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 = TTMatcher(matchDataSet: mapView)
matcher.delegate = self
self.matcher = [[TTMatcher alloc] initWithMatchDataSet:self.mapView];
self.matcher.delegate = self;


To update map matcher with new GPS position:


[self.source updateLocationWithLocation:location];

To process map matcher results:


public func matcherResultMatchedLocation(_ matched: TTMatcherLocation, withOriginalLocation original: TTMatcherLocation, isMatched: Bool) {
- (void)matcherResultMatchedLocation:(TTMatcherLocation *)matched
                withOriginalLocation:(TTMatcherLocation *)original
                           isMatched:(BOOL)isMatched {



Grey chevron - position is matched to the map


Blue chevron - position is not matched to the map

To create route matcher instance and register for updates:


matcher = TTMatcher(matchDataSet: plannedRoute)
matcher?.delegate = self
self.matcher = [[TTMatcher alloc] initWithMatchDataSet:plannedRoute];
self.matcher.delegate = self;



Follow the chevron

Allow your users to follow their changing positions on the map e.g. when driving. When a new
location is set, the animation moves the chevron to the new position.

Sample use case 1: You want to show your user position when driving.

Custom chevron indicator

You can set a custom icon for the chevron indicator.

To create custom chevron:


let animation = TTChevronAnimationOptionsBuilder.create(withAnimatedCornerRounding: false).build()
chevron = TTChevronObject(normalImage: TTChevronObject.defaultNormalImage(), withDimmedImage: TTChevronObject.defaultDimmedImage(), with: animation)
TTChevronAnimationOptions *animation = [[TTChevronAnimationOptionsBuilder
    createWithAnimatedCornerRounding:true] build];
self.chevron = [[TTChevronObject alloc]
            initWithNormalImage:[TTChevronObject defaultNormalImage]
                withDimmedImage:[TTChevronObject defaultDimmedImage]


Chevron tracking mode

Additionally, it is possible to track the chevron. It means that the camera/map and the chevron
move when a new location is received so that the map is always centered on the chevron with
the bearing of the drive. In the tracking mode, rotate and pan gestures are blocked.
The user can change only zoom level, while the map camera is automatically adjusted
to follow the chevron.

To start tracking selected chevron:


[self.mapView.trackingManager startTrackingObject:self.chevron];


To stop tracking selected chevron:


[self.mapView.trackingManager stopTrackingObject:self.chevron];



Chevron overview


Chevron tracking

You are here