public protocol MapMatchingEngine : ManageableEngine

Interface to a Map Matcher Engine.

Map Matcher is a component that tries to match position input (includes GNSS data, existing Route) to a point on a map. The output of the MapMatchingEngine is a MapMatchingResult that contains an accurate (matched) location along with additional information such as alternative and predicted locations (GeoLocation). Depending on the availability of geolocation input data, Map Matcher works in two modes:

  • When available - retrieving a map-matched location based on the input data.
  • When not available - extrapolating the location based on the last known location. It is used when there is no GNSS data available, for instance, when the device is in a tunnel. If there is no last known location, extrapolation is not possible, and the map-matching result is null.

The Navigation SDK provides factories to create map matcher engines. One of them is the TileStoreMapMatchingEngineFactory which creates a map matcher engine. This factory creates an engine that attempts to match the position input to the navigation tile data (provided by an online map). To do so, it uses a map-based tile data store (NavigationTileStore). A client application must specify the data store when creating the engine.

To create a NavigationTileStore an API key is required. With the key you configure the store by setting up the NavigationTileStoreConfiguration:

let navigationTileStoreConfiguration = NavigationTileStoreConfiguration(apiKey: NAVIGATION_API_KEY)
let navigationTileStore = try NavigationTileStore(config: navigationTileStoreConfiguration)

To create a map-matching engine, use the TileStoreMapMatchingEngineFactory class:

let mapMatcherEngine = try TileStoreMapMatchingEngineFactory.create(tileStore: navigationTileStore)

To match the location to a position on a map, use the [matchLocation] function:

let mapMatchingResult = try mapMatcherEngine.matchLocation(navigationSnapshot: navigationSnapshot)

To extrapolate the location, use the [extrapolateLocation] function:

let mapMatchingResult = try mapMatcherEngine.extrapolateLocation(navigationSnapshot: navigationSnapshot)


This is a Public Preview API. It may be changed or removed at any time.