Location context
The Navigation SDK for iOS is only available upon request. Contact us to get started.
The detailed information about a current location on the road is called the location context. Every location update that comes from MapMatchingEngine
to Navigation
is map-matched. Map-matched locations are then used as an input for LocationContextProviderEngine
, which retrieves detailed information about the current location. Both MapMatchingEngine
and LocationContextProviderEngine
can be customized during NavigationConfiguration
creation.
1let configuration = NavigationConfiguration(2 apiKey: "<NAVIGATION-KEY>",3 locationProvider: locationProvider,4 routeReplanner: routeReplanner,5 mapMatchingEngine: customMapMatchingEngine,6 locationContextProviderEngine: customLocationContextProviderEngine7)89self.navigation = Navigation(configuration: configuration)
The details are returned as a LocationContext
object.
LocationContext
consists of:
- speed - This is the current speed.
- speedLimit - This is the speed limit, or null if it is unknown.
- address - The address of the current location which consists of:
- streetName - This is the street name.
- city - The city.
- countryCode - This is the three-character ISO 3166-1 alpha-3 country code.
- road - The road type of the current location which consists of:
- isTunnel - This indicates whether the location is in a tunnel.
- isUnderpass - This indicates whether the location is on an underpass.
- functionalRoadClass - This indicates the relative importance of the road within the routing network. Regular values are in a range [0, 7], where lower numbers indicate more important, faster roads.
To get current LocationContext
updates, set up a NavigationLocationContextObserver::func didDetectLocationContext(locationContext: LocationContext)
callback.
1func didDetectLocationContext(locationContext: LocationContext) {2 let speed: Measurement<UnitSpeed> = locationContext.speed3 let speedLimit: SpeedLimit? = locationContext.speedLimit45 let countryCode: String = locationContext.address.countryCode6 let city: String = locationContext.address.city7 let streetName: String = locationContext.address.streetName89 let functionalRoadClass: Int? = locationContext.road?.functionalRoadClass10 let isRoadTunnel: Bool? = locationContext.road?.isTunnel11 let isRoadUnderpass: Bool? = locationContext.road?.isUnderpass12}
Next steps
Since you have learned about location context, here are recommendations for the next steps: