Releases: mapbox/mapbox-navigation-android
Mapbox Navigation SDK 2.15.0
Mapbox Navigation SDK 2.15.0 - 04 August, 2023
Changelog
Changes between v2.14.0 and v2.15.0
Features
- Added
IncidentInfo#trafficCodes
property. #7407 - Introduced
RoutesInvalidatedObserver
to be notified about routes invalidation. When this observer is fired, the routes passed as an argument will not be refreshed anymore, because they expired. It is recommended to rebuild a route in this case. Example usage: #7318
mapboxNavigation.registerRoutesInvalidatedObserver { routes ->
val invalidatedIds = routes.map { it.id }
val currentRoutes = mapboxNavigation.getNavigationRoutes()
val primaryRoute = currentRoutes.firstOrNull()
if (routes.any { it.id == primaryRoute?.id }) {
// primary route is outdated - trigger reroute
mapboxNavigation.getRerouteController()?.reroute(object : NavigationRerouteController.RoutesCallback {
override fun onNewRoutes(
routes: List<NavigationRoute>,
routerOrigin: RouterOrigin
) {
mapboxNavigation.setNavigationRoutes(routes)
}
})
} else {
// remove outdated alternatives
mapboxNavigation.setNavigationRoutes(currentRoutes.filterNot { it.id in invalidatedIds })
}
}
- Introduced
MERGING_AREA
RoadObject type. You can receive Merging Areas viaRouteProgress#upcomingRoadObjects
and viaEHorizonObserver
. Note: to enable merging area collection when using EHorizon, setAlertServiceOptions#collectMergingAreas
to true. #7358 - Added new option to control gender of voice
MapboxSpeechApiOptions.gender
. #7337 - Added new options to
RouteLineColorResources
to style congestion, restrictions, and closures colors on inactive legs whenMapboxRouteLineOptions#styleInactiveRouteLegsIndependently
is enabled. The values default to transparent. #7322
Bug fixes and improvements
- Added
RouteLineColorResources#inactiveRouteLegCasingColor
to specify the color used for inactive legs casing. #7392 - Fixed an issue where in rare cases
BannerInstructionsObserver
might not have been invoked for an instruction when the route was being refreshed. #7414 - Reverted sticky charging stations feature for rerouting. #7403
- Map matching now uses emergency roads. #7404
- Improved algorithm that chooses fork during dead-reckoning. #7404
- Dead-reckoning is allowed even in short tunnels and bridges. #7404
- Improved arrival detection in case of off-road. #7429
- Fixed an issue where RouteProgress might have contained the same incident twice. #7429
- Fixed an issue where the app might have crashed due to JNI reference table overflow. #7429
- Fixed an issue with broken map-matching after significant teleports. #7429
- Fixed an issue where map-matching might have jumped on parallel roads. #7429
- Started using fallback to onboard routing in case of 5xx Directions Response codes. #7429
- Added
IncidentInfo#multilingualAffectedRoadNames
. #7428 - Fixed an issue where soft gradient was not applied for active legs. #7410
- Now updated via
MapboxNavigation#onEvDataUpdated
parameters are added to continuous alternatives requests. #7380 - Fixed snapping to a tunnel after driving out of underground parking. #7372
- Fixed ADASIS assertion failures on KML files. #7372
- Fixed MapMatching isuue where it might have picked the wrong tunnel. #7372
- Fixes an issue where trail layer that indicates the traveled portion of the route was visible below inactive legs. #7363
- Nav SDK now preserves charging stations after reroute. #7369
- Fixed an issue where
RoutingTilesOptions#tilesBaseUri
was used as a base url for route refresh requests instead ofRouteOptions#baseUrl
. #7294 - Improved Copilot to send a proper type with events of type
DriveEndsEvent
. #7236 - Added a Copilot option that allows to disable recording Free Drive histories. #7276
- Added experimental
metadata
property toLegWaypoint
class. This property exposes the correspondingDirectionsWaypoint#metadata
. #7259 - Added Copilot option that allows to split history files by duration. #7232
- Added Copilot options that allow to limit the number and total size of history files to be sent per session. #7232
- Route request timeout errors are now considered failures as opposed to cancellations (
NavigationRouterCallback#onFailure
will be invoked instead ofNavigationRouterCallback#onCanceled
). #7319 - Fixed an issue where location might have been snapped to an incorrect road when previously location updates had been inactive. #7319
- Fixed an issue where in case of poor location signal it might have been snapped to a road, which is above/below the correct one. #7319
- Added experimental
MapboxNavigation#etcGateApi
so that the app can provide data about passed ETC gates. #7295 - Fixed an issue where road closures where not displayed for inactive legs of the route. #7322
- Added experimental and temporary (i.e. it will be removed in one of the next releases)
OnlineRouteAlternativesSwitch
which requests online route when the current route is offline and automatically switches if such a route is found. It's designed for the case when platform's reachability API doesn't work reliably. #7245 - Fixed an issue where RouteReplaySession might not have started playing a route if it was created approximately at the same time when routes were set to
MapboxNavigation
. #7293
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.15.0
(release notes) - Mapbox Navigation Native
v148.0.0
- Mapbox Core Common
v23.7.0
- Mapbox Java
v6.13.0
(release notes)
Mapbox Navigation SDK 2.15.0-rc.1
Mapbox Navigation SDK 2.15.0-rc.1 - 20 July, 2023
Changelog
Changes between v2.15.0-beta.1 and v2.15.0-rc.1
Features
- Introduced
RoutesInvalidatedObserver
to be notified about routes invalidation. When this observer is fired, the routes passed as an argument will not be refreshed anymore, because they expired. It is recommended to rebuild a route in this case. Example usage: #7318
mapboxNavigation.registerRoutesInvalidatedObserver { routes ->
val invalidatedIds = routes.map { it.id }
val currentRoutes = mapboxNavigation.getNavigationRoutes()
val primaryRoute = currentRoutes.firstOrNull()
if (routes.any { it.id == primaryRoute?.id }) {
// primary route is outdated - trigger reroute
mapboxNavigation.getRerouteController()?.reroute(object : NavigationRerouteController.RoutesCallback {
override fun onNewRoutes(
routes: List<NavigationRoute>,
routerOrigin: RouterOrigin
) {
mapboxNavigation.setNavigationRoutes(routes)
}
})
} else {
// remove outdated alternatives
mapboxNavigation.setNavigationRoutes(currentRoutes.filterNot { it.id in invalidatedIds })
}
}
- Introduced
MERGING_AREA
RoadObject type. You can receive Merging Areas viaRouteProgress#upcomingRoadObjects
and viaEHorizonObserver
. Note: to enable merging area collection when using EHorizon, setAlertServiceOptions#collectMergingAreas
to true. #7358 - Added new option to control gender of voice
MapboxSpeechApiOptions.gender
. #7337
Bug fixes and improvements
- Now updated via
MapboxNavigation#onEvDataUpdated
parameters are added to continuous alternatives requests. #7380 - Fixed snapping to a tunnel after driving out of underground parking. #7372
- Fixed ADASIS assertion failures on KML files. #7372
- Fixed MapMatching isuue where it might have picked the wrong tunnel. #7372
- Fixes an issue where trail layer that indicates the traveled portion of the route was visible below inactive legs. #7363
- Nav SDK now preserves charging stations after reroute. #7369
Known issues ⚠️
Other changes
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.15.0-rc.1
(release notes) - Mapbox Navigation Native
v145.0.0
- Mapbox Core Common
v23.7.0-rc.1
- Mapbox Java
v6.13.0-beta.1
(release notes)
Mapbox Navigation SDK 2.15.0-beta.1
Mapbox Navigation SDK 2.15.0-beta.1 - 07 July, 2023
Changelog
Changes between v2.14.1 and v2.15.0-beta.1
Features
- Added new options to
RouteLineColorResources
to style congestion, restrictions, and closures colors on inactive legs whenMapboxRouteLineOptions#styleInactiveRouteLegsIndependently
is enabled. The values default to transparent. #7322
Bug fixes and improvements
- Fixed an issue where
RoutingTilesOptions#tilesBaseUri
was used as a base url for route refresh requests instead ofRouteOptions#baseUrl
. #7294 - Improved Copilot to send a proper type with events of type
DriveEndsEvent
. #7236 - Added a Copilot option that allows to disable recording Free Drive histories. #7276
- Added experimental
metadata
property toLegWaypoint
class. This property exposes the correspondingDirectionsWaypoint#metadata
. #7259 - Added Copilot option that allows to split history files by duration. #7232
- Added Copilot options that allow to limit the number and total size of history files to be sent per session. #7232
- Route request timeout errors are now considered failures as opposed to cancellations (
NavigationRouterCallback#onFailure
will be invoked instead ofNavigationRouterCallback#onCanceled
). #7319 - Fixed an issue where location might have been snapped to an incorrect road when previously location updates had been inactive. #7319
- Fixed an issue where in case of poor location signal it might have been snapped to a road, which is above/below the correct one. #7319
- Added experimental
MapboxNavigation#etcGateApi
so that the app can provide data about passed ETC gates. #7295 - Fixed an issue where road closures where not displayed for inactive legs of the route. #7322
- Added experimental and temporary (i.e. it will be removed in one of the next releases)
OnlineRouteAlternativesSwitch
which requests online route when the current route is offline and automatically switches if such a route is found. It's designed for the case when platform's reachability API doesn't work reliably. #7245 - Fixed an issue where RouteReplaySession might not have started playing a route if it was created approximately at the same time when routes were set to
MapboxNavigation
. #7293
Known issues ⚠️
- In case an app provides custom
Router
implementation to Nav SDK, the Nav SDK doesn't triggerNavigationRouteAlternativesObserver
with online alternatives when current route is offline.
Other changes
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.15.0-beta.1
(release notes) - Mapbox Navigation Native
v143.0.0
- Mapbox Core Common
v23.7.0-beta.1
- Mapbox Java
v6.12.0
(release notes)
Mapbox Navigation SDK 2.14.1
Mapbox Navigation SDK 2.14.1 - 06 July, 2023
Changelog
Changes between v2.14.0 and v2.14.1
Features
- Added new options to
RouteLineColorResources
to style congestion, restrictions, and closures colors on inactive legs whenMapboxRouteLineOptions#styleInactiveRouteLegsIndependently
is enabled. The values default to transparent. #7322
Bug fixes and improvements
- Route request timeout errors are now considered failures as opposed to cancellations (
NavigationRouterCallback#onFailure
will be invoked instead ofNavigationRouterCallback#onCanceled
). #7324 - Fixed an issue where road closures where not displayed for inactive legs of the route. #7322
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.14.1
(release notes) - Mapbox Navigation Native
v137.1.2
- Mapbox Core Common
v23.6.0
- Mapbox Java
v6.12.0
(release notes)
Mapbox Navigation SDK 2.14.0
Mapbox Navigation SDK 2.14.0 - 23 June, 2023
Changelog
Changes between v2.13.0 and v2.14.0
Features
- Added
RouteProgress#inParkingAisle
field indicating whether the current location belongs to a parking aisle. #7212
Bug fixes and improvements
- Fixed an issue where
RoutingTilesOptions#tilesBaseUri
was used as a base url for route refresh requests instead ofRouteOptions#baseUrl
. #7292 - Fixed an issue where RouteReplaySession might not have started playing a route if it was created approximately at the same time when routes were set to
MapboxNavigation
. #7299 - Added experimental and temporary (i.e. it will be removed in one of the next releases)
OnlineRouteAlternativesSwitch
which requests online route when the current route is offline and automatically switches if such a route is found. It's designed for the case when platform's reachability API doesn't work reliably. #7263 - Fixed an issue with Copilot that caused history files without user feedback to remain on disk when using
shouldSendHistoryOnlyWithFeedback
option. #7233 - Fixed an issue with too high alternative route requests frequency in case of only one route being present in the route response. #7247
- Fixed an issue with positioning lag in tunnels. #7247
- Fixed an issue where no
MapboxRouteLineApi
callbacks or suspensions for any function would have been invoked if map instance was destroyed whileMapboxRouteLineApi#findClosestRoute
was in progress. #7213 - Decreased java memory usage for route requests, alternatives requests, reroutes. #7201
- Deprecated SpeedLimit class and introduced SpeedLimitInfo instead. The latter uses speed in the corresponding units (as opposed to speedKmph in SpeedLimit) and provides unit and sign info even if the limit itself is unknown. #7214
- Fixed an issue where first device location was not used when replay was active either in Drop-In or when using
ReplayRouteSession
directly. #7246 - Supported displaying distances in yards for imperial UnitType in the UK locale. #6786
- Changed
RouteProgress#hasUnexpectedUpcomingClosures
behavior: now it returns false if there are only "expected" closures. A closure is considered expected if it was present in the original route response. An unexpected closure is the one that appears after route refresh. #7237
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.14.1
(release notes) - Mapbox Navigation Native
v137.1.1
- Mapbox Core Common
v23.6.0
- Mapbox Java
v6.12.0
(release notes)
Mapbox Navigation SDK 2.13.2
Mapbox Navigation SDK 2.13.2 - 15 June, 2023
Changelog
Changes between v2.13.1 and v2.13.2
Features
Bug fixes and improvements
- Fixed redundant route alternatives request when a single primary route is set. #7267
- Fixed lagging of enhanced location updates, i.e. when they're behind the real position, in tunnels. #7267
- Added experimental and temporary (i.e. it will be removed in one of the next releases)
OnlineRouteAlternativesSwitch
which requests online route when the current route is offline and automatically switches if such a route is found. It's designed for the case when platform's reachability API doesn't work reliably. #7264 - Changed
RouteProgress#hasUnexpectedUpcomingClosures
behavior: now it returns false if there are only "expected" closures. A closure is considered expected if it was present in the original route response. An unexpected closure is the one that appears after route refresh. #7240
Known issues ⚠️
- Route refresh base URL is not set via
RouteOptions#baseUrl
. Instead,NavigationOptions#routingTilesOptions#tilesBaseUri
is used for refresh.
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.13.0
(release notes) - Mapbox Navigation Native
v132.5.1
- Mapbox Core Common
v23.5.0
- Mapbox Java
v6.11.0
(release notes)
Mapbox Navigation SDK 2.7.5
Mapbox Navigation SDK 2.7.5 - 15 June, 2023
Changelog
Changes between v2.7.4 and v2.7.5
Features
Bug fixes and improvements
- Fixed an issue where
RoutingTilesOptions#tilesBaseUri
was used as a base url for route refresh requests instead ofRouteOptions#baseUrl
.
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.7.0
(release notes) - Mapbox Navigation Native
v111.2.0
- Mapbox Core Common
v22.1.0
- Mapbox Java
v6.7.0
(release notes) - Mapbox Android Core
v5.0.2
(release notes)
Mapbox Navigation SDK 2.14.0-rc.1
Mapbox Navigation SDK 2.14.0-rc.1 - 09 June, 2023
Changelog
Changes between v2.14.0-beta.1 and v2.14.0-rc.1
Features
- Added
RouteProgress#inParkingAisle
field indicating whether the current location belongs to a parking aisle. #7212
Bug fixes and improvements
- Fixed an issue with Copilot that caused history files without user feedback to remain on disk when using
shouldSendHistoryOnlyWithFeedback
option. #7233 - Fixed an issue with too high alternative route requests frequency in case of only one route being present in the route response. #7247
- Fixed an issue with positioning lag in tunnels. #7247
- Fixed an issue where no
MapboxRouteLineApi
callbacks or suspensions for any function would have been invoked if map instance was destroyed whileMapboxRouteLineApi#findClosestRoute
was in progress. #7213 - Decreased java memory usage for route requests, alternatives requests, reroutes. #7201
- Deprecated SpeedLimit class and introduced SpeedLimitInfo instead. The latter uses speed in the corresponding units (as opposed to speedKmph in SpeedLimit) and provides unit and sign info even if the limit itself is unknown. #7214
- Fixed an issue where first device location was not used when replay was active either in Drop-In or when using
ReplayRouteSession
directly. #7246 - Supported displaying distances in yards for imperial UnitType in the UK locale. #6786
- Changed
RouteProgress#hasUnexpectedUpcomingClosures
behavior: now it returns false if there are only "expected" closures. A closure is considered expected if it was present in the original route response. An unexpected closure is the one that appears after route refresh. #7237
Known issues ⚠️
- Route refresh base URL is not set via
RouteOptions#baseUrl
. Instead,NavigationOptions#routingTilesOptions#tilesBaseUri
is used for refresh.
Other changes
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.14.0-rc.1
(release notes) - Mapbox Navigation Native
v136.0.1
- Mapbox Core Common
v23.6.0-rc.1
- Mapbox Java
v6.12.0
(release notes)
Mapbox Navigation SDK 2.13.1
Mapbox Navigation SDK 2.13.1 - 31 May, 2023
Changelog
Changes between v2.13.0 and v2.13.1
Features
Bug fixes and improvements
- Fixed offline-online routes switch via route alternative observer for the case when new online route is the same as current offline. #7215
- Improved road snapping for the case when GPS signal is unstable. When GPS signal becomes unstable, LocationMatcherResult#isOffRoad stays false and LocationMatcherResult#enhancedLocation is snapped to a road, the effect takes place until stabilisation of GPS signal. #7215
- Fixed
NavigationRoutes#waypoints
being null for EV offline fallback. #7165
Known issues ⚠️
NavigationRouteAlternativesObserver#onRouteAlternatives
could be called with an online alternative that is the same as current offline route except for its origin and annotations.
MapboxNavigation#getAlternativeMetadataFor
will return null for that alternative.
CallingMapboxNavigation#setNavigationRoutes(listOf(currentOfflinePrimaryRoute, newOnlineAlternative))
for that case won't make any effect as the alternative will be ignored.
Make sure that you implemented routes alternatives observers with respect to offline-online scenarios as documentation suggests.
Known issues ⚠️
- Route refresh base URL is not set via
RouteOptions#baseUrl
. Instead,NavigationOptions#routingTilesOptions#tilesBaseUri
is used for refresh.
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.13.0
(release notes) - Mapbox Navigation Native
v132.3.0
- Mapbox Core Common
v23.5.0
- Mapbox Java
v6.11.0
(release notes)
Mapbox Navigation SDK 2.14.0-beta.1
Mapbox Navigation SDK 2.14.0-beta.1 - 26 May, 2023
Changelog
Changes between v2.13.0 and v2.14.0-beta.1
Features
- Added support for uncompressed memory mapped tiles that could be enabled via config options(turned off by default). #7197
Bug fixes and improvements
- Improved road snapping for the case when GPS signal is unstable. When GPS signal becomes unstable, LocationMatcherResult#isOffRoad stays false and LocationMatcherResult#enhancedLocation is snapped to a road, the effect takes place until stabilisation of GPS signal. #7197
- Added
MapboxNavigation#currentLegIndex
. Use this method to correctly pass leg index toMapboxRouteLineAPI#setNavigationRoutes
method, this is especially important if you use independent inactive leg styling: #7102
val routesObserver = RoutesObserver {
routeLineAPI.setNavigationRoutes(result.navigationRoutes, mapboxNavigation.currentLegIndex()).apply {
routeLineView.renderRouteDrawData(mapboxMap.getStyle()!!, this)
}
}
- Fixed offline-online routes switch via route alternative observer for the case when new online route is the same as current offline. #7195
- Fixed
NavigationRoutes#waypoints
being null for EV offline fallback. #7165
Known issues ⚠️
NavigationRouteAlternativesObserver#onRouteAlternatives
could be called with an online alternative that is the same as current offline route except for its origin and annotations.
MapboxNavigation#getAlternativeMetadataFor
will return null for that alternative.
CallingMapboxNavigation#setNavigationRoutes(listOf(currentOfflinePrimaryRoute, newOnlineAlternative))
for that case won't make any effect as the alternative will be ignored.
Make sure that you implemented routes alternatives observers with respect to offline-online scenarios as documentation suggests.- Route refresh base URL is not set via
RouteOptions#baseUrl
. Instead,NavigationOptions#routingTilesOptions#tilesBaseUri
is used for refresh.
Other changes
Mapbox dependencies
This release depends on, and has been tested with, the following Mapbox dependencies:
- Mapbox Maps SDK
v10.14.0-beta.1
(release notes) - Mapbox Navigation Native
v135.0.0
- Mapbox Core Common
v23.6.0-beta.1
- Mapbox Java
v6.11.0
(release notes)