Releases: mapbox/mapbox-navigation-ios
v1.1.0
Packaging
- MapboxNavigationNative dependency was updated to v22.0.5 and MapboxCommon to v7.1.2. (#2648)
User location
- Fixed issues which was causing unsmooth user puck updates on iOS and inability to zoom-in to current location at the start of navigation on CarPlay by updating to Mapbox Maps SDK for iOS v6.2.2. (#2699)
- Added the
NavigationServiceDelegate.navigationService(_:didChangeAuthorizationFor:)
method andNotification.Name.locationAuthorizationDidChange
to detect when the user changes the Location Services permissions for the current application, including for approximate location on iOS 14. (#2693) - When approximate location is enabled on iOS 14, a banner appears reminding the user to disable approximate location to continue navigating. (#2693)
Other changes
RouteProgress
,RouteLegProgress
, andRouteStepProgress
now conform to theCodable
protocol. (#2615)- Fixed an issue where
NavigationMapView
redrew at a low frame rate even when the device was plugged in. (#2643) - Fixed an issue where the route line flickered when refreshing. (#2642)
- Fixed an issue where the End of route view UI is broken prior to iOS 11. (#2690)
- Fixed an issue where completed waypoints remained on map after rerouting. (#2378)
- Fixed an issue where positioning icon was not highlighted on CarPlay when using iOS 14.0. (#2681)
- Fixed an issue where ETA label font was too small during turn-by-turn navigation. (#2679)
- Fixed an issue with
NavigationMapViewDelegate.navigationMapView(_:shapeFor:)
andNavigationMapViewDelegate.navigationMapView(_:simplifiedShapeFor:)
methods were not correctly called for route shape customization (#2623) - Fixed an issue where the banner indicating simulation mode displayed a very large speed factor in the Hebrew location. (#2714)
- Fixed an issue where incorrect speed multiplier value was shown after arriving to the intermediate waypoint. (#2710)
Documentation is available online or within Xcode.
v1.1.0-rc.1
Changes since v1.1.0-beta.2:
User location
- Added the
NavigationServiceDelegate.navigationService(_:didChangeAuthorizationFor:)
method andNotification.Name.locationAuthorizationDidChange
to detect when the user changes the Location Services permissions for the current application, including for approximate location on iOS 14. (#2693) - When approximate location is enabled on iOS 14, a banner appears reminding the user to disable approximate location to continue navigating. (#2693)
User interface
- Fixed an issue where completed waypoints remained on map after rerouting. (#2378)
- Fixed an issue where positioning icon was not highlighted on CarPlay when using iOS 14.0. (#2681)
- Fixed an issue where ETA label font was too small during turn-by-turn navigation. (#2679)
- Fixed an issue with
NavigationMapViewDelegate.navigationMapView(_:shapeFor:)
andNavigationMapViewDelegate.navigationMapView(_:simplifiedShapeFor:)
methods were not correctly called for route shape customization (#2623) - Fixed an issue where the banner indicating simulation mode displayed a very large speed factor in the Hebrew location. (#2714)
- Fixed an issue where incorrect speed multiplier value was shown after arriving to the intermediate waypoint. (#2710)
Other changes
- Removed the offline service feature that was introduced in v1.1.0-beta.2. (#2712)
Documentation is available online or within Xcode.
v1.1.0-beta.2
Changes since v1.1.0-beta.1:
- MapboxNavigationNative dependency was updated to v22.0.5 and MapboxCommon to v7.1.2. (#2648)
- Added Offline Service support for Maps and Navigation. To allow Mapbox Maps SDK to pick up downloaded regions,
OfflineService
has to be instantiated prior toMGLMapView
. In case of offline navigationMapboxNavigationService
andPassiveLocationDataSource
has to containtilesVersion
parameter of downloaded Navigation region. UndeprecatedNavigationDirections
,OfflineRouteCompletionHandler
andNavigationDirections.calculate(_:offline:completionHandler:)
and introducedNavigationDirections.configureRouter(tilesVersion:)
to be able to request route in offline. (#2653) - Fixed an issue where the End of route view UI is broken prior to iOS 11. (#2690)
- Fixed an issue where completed waypoints remained on map after rerouting. (#2378)
- Fixed an issue where positioning icon was not highlighted on CarPlay when using iOS 14.0. (#2681)
Documentation is available online or within Xcode.
v1.1.0-beta.1
Changes since v1.1.0-alpha.2, including changes in v1.0.0 since v1.0.0-rc.5:
- Fixed a linker error in Xcode 12 when using CocoaPods. (#2662)
- Fixed a crash on iOS 14 when starting a trip while connected to CarPlay. (#2670)
- Fixed an issue where the user puck stuttered on iOS 14. (#2659)
- Fixed an issue where the user puck appeared in the upper-left corner when initially showing a
NavigationMapView
. (#2669) - Fixed an issue where the route line overlapped labels and shields if
MGLPolyline
s orMGLPolygon
s had been added to aNavigationMapView
as annotations beforehand. (#2661)
Documentation is available online or within Xcode.
v1.0.0
Packaging
- By default, usage of Mapbox APIs is now billed together based on monthly active users rather than individually by HTTP request. Learn more in the pricing guide. (#2405)
- Carthage v0.35 or above is now required for installing this SDK if you use Carthage. (
81a36d0
) - MapboxNavigation depends on Mapbox Maps SDK for iOS v6.0.0, and MapboxCoreNavigation depends on builds of MapboxNavigationNative and MapboxCommon that require authentication. Before CocoaPods or Carthage can download Mapbox.framework, MapboxNavigationNative.framework, and MapboxCommon.framework, you need to create a special-purpose access token. See the updated installation instructions in the readme for more details. (#2437, #2477)
- If you install this SDK using Carthage, you need to also add MapboxCommon.framework to your application target’s Embed Frameworks build phase. (#2477)
- Xcode 11.4.1 or above is now required for building this SDK from source. (#2417)
- Added Greek and Turkish localizations. (#2385, #2475)
- Upgraded to MapboxDirections v1.0.0, MapboxSpeech v1.0.0, and Turf v1.0.0. (#2646)
Map
- The
MGLStyle.navigationDayStyleURL
andMGLStyle.navigationNightStyleURL
properties contain URLs to the Mapbox Navigation Day and Night v1 styles, both of which show traffic congestion lines on all roads by default. The traffic congestion layer is appropriate for a preview map; to tailor the style to turn-by-turn navigation, setMGLMapView.showsTraffic
tofalse
. (#2523) - A portion of the route line now disappears behind the user puck as the user travels along the route during turn-by-turn navigation if
NavigationViewController.routeLineTracksTraversal
is set totrue
. (#2377) - Ability to hide the route line behind the user puck on CarPlay can be enabled by setting
CarPlayNavigationViewController.routeLineTracksTraversal
totrue
. (#2601) - Traffic congestion segments along the route line and the estimated arrival time periodically update to reflect current conditions when using the
DirectionsProfileIdentifier.automobileAvoidingTraffic
profile. These updates correspond to the newNotification.Name.routeControllerDidRefreshRoute
notification,NavigationServiceDelegate.navigationService(_:didRefresh:)
method, andNavigationViewControllerDelegate.navigationViewController(_:didRefresh:)
method. To disable these updates, setRouteOptions.refreshingEnabled
tofalse
. (#2366) - A building at the destination waypoint can be extruded in 3D and highlighted for emphasis and recognizability. To enable building extrusion or highlighting, set the
NavigationViewController.waypointStyle
property. For a standalone map view that is not part ofNavigationViewController
, call theNavigationMapView.highlightBuildings(at:in3D:)
method to highlight the destination building at a specific coordinate andNavigationMapView.unhighlightBuildings()
to reverse this effect. (#2535) - Replaced the
MGLStyle.navigationPreviewDayStyleURL
andMGLStyle.navigationGuidanceDayStyleURL
properties withMGLStyle.navigationDayStyleURL
, and replacedMGLStyle.navigationPreviewNightStyleURL
andMGLStyle.navigationGuidanceNightStyleURL
withMGLStyle.navigationNightStyleURL
. (#2523) - Replaced the
MGLStyle.navigationGuidanceDayStyleURL(version:)
andMGLStyle.navigationGuidanceNightStyleURL(version:)
methods withMGLStyle.navigationDayStyleURL(version:)
andMGLStyle.navigationNightStyleURL(version:)
respectively, removed theMGLStyle.navigationPreviewDayStyleURL(version:)
andMGLStyle.navigationPreviewNightStyleURL(version:)
methods. (#2567) - Removed the
NavigationViewControllerDelegate.navigationViewController(_:imageFor:)
andNavigationViewControllerDelegate.navigationViewController(_:viewFor:)
methods in favor ofMGLMapViewDelegate.mapView(_:imageFor:)
andMGLMapViewDelegate.mapView(_:viewFor:)
, respectively. (#2396) - Removed
NavigationMapViewDelegate.navigationMapView(_:routeStyleLayerWithIdentifier:source:)
,NavigationMapViewDelegate.navigationMapView(_:routeCasingStyleLayerWithIdentifier:source:)
in favor of four new delegate methods to customize the route styling (#2377):NavigationMapViewDelegate.navigationMapView(_:mainRouteStyleLayerWithIdentifier:source:)
to style the main route.NavigationMapViewDelegate.navigationMapView(_:mainRouteCasingStyleLayerWithIdentifier:source:)
to style the casing of the main route.NavigationMapViewDelegate.navigationMapView(_:alternativeRouteStyleLayerWithIdentifier:source:)
to style alternative routes.NavigationMapViewDelegate.navigationMapView(_:alternativeRouteCasingStyleLayerWithIdentifier:source:)
to style the casing of alternative routes.
- Removed the deprecated
NavigationMapView.showRoutes(_:legIndex:)
method in favor ofNavigationMapView.show(_:legIndex:)
andNavigationMapView.showWaypoints(_:legIndex:)
in favor ofNavigationMapView.showWaypoints(on:legIndex:)
. (#2539) - Fixed an issue where the casing for the main route would not overlap alternative routes. (#2377)
- Fixed memory leaks after disconnecting the application from CarPlay. (#2470)
- Fixed issue which was causing incorrect alignment of
MGLMapView.attributionButton
andMGLMapView.logoView
. (#2613)
Visual and spoken instructions
- As the user approaches certain junctions, an enlarged illustration of the junction appears below the top banner to help the user understand a complex maneuver. These junction views only appear when the relevant data is available. Contact your Mapbox sales representative or support team for access to the junction views feature. (#2408)
- Replaced
RouteVoiceController
andMapboxVoiceController
withMultiplexedSpeechSynthesizer
.MultiplexedSpeechSynthesizer
coordinates multiple cascading speech synthesizers. By default, the controller still tries to speak instructions via the Mapbox Voice API (MapboxSpeechSynthesizer
) before falling back to VoiceOver (SystemSpeechSynthesizer
), but you can also provide your own speech synthesizer that conforms to theSpeechSynthesizing
protocol. (#2348) - Added an alternative presentation for maneuver instructions that resembles swipeable user notification cards. To replace the conventional
TopBannerViewController
presentation with the cardlike presentation, create an instance ofInstructionsCardViewController
and pass it into theNavigationOptions(styles:navigationService:voiceController:topBanner:bottomBanner:)
method. (#2149, #2296, #2627)
Feedback
- The user can optionally provide more detailed feedback during turn-by-turn navigation. After tapping the feedback button and selecting a feedback type, the user is taken to a second screen for selecting from among multiple subtypes. Set the
FeedbackViewController.detailedFeedbackEnabled
property totrue
to enable two-step feedback. (#2544) - Reorganized
FeedbackType
cases (#2419):- Removed
FeedbackType.accident
,FeedbackType.hazard
,FeedbackType.reportTraffic
, andFeedbackType.mapIssue
. - Renamed
FeedbackType.roadClosed
andFeedbackType.notAllowed
toFeedbackType.roadClosure(subtype:)
andFeedbackType.illegalRoute(subtype:)
, respectively. - Renamed
FeedbackType.routingError
toFeedbackType.routeQuality(subtype:)
. - Renamed
FeedbackType.confusingInstruction
toFeedbackType.confusingAudio(subtype:)
. - Added
FeedbackType.incorrectVisual(subtype:)
,FeedbackType.routeQuality(subtype:)
, andFeedbackType.positioning(subtype:)
. FeedbackType.missingRoad
is now represented asFeedbackType.routeQuality(subtype:)
with a subtype ofRouteQualitySubtype.routeIncludedMissingRoads
.FeedbackType.missingExit
is now represented asFeedbackType.incorrectVisual(subtype:)
with a subtype ofIncorrectVisualSubtype.exitInfoIncorrect
.
- Removed
FeedbackViewController
no longer dismisses automatically after 10 seconds. (#2420)- Refreshed the feedback type icons. (#2419, #2421)
- Fixed warnings in Interface Builder that prevented styling of UI components in
EndOfRouteViewController
. (#2518)
User location
- Improved the accuracy of location tracking and off-route detection. (#2319)
- Added the
PassiveLocationManager
class for use with theMGLMapView.locationManager
property. UnlikeCLLocationManager
, this class causes the map view to display user locations snapped to the road network, just like during turn-by-turn navigation. To receive these locations without anMGLMapView
, use thePassiveLocationDataSource
class and implement thePassiveLocationDataSourceDelegate.passiveLocationDataSource(_:didUpdateLocation:rawLocation:)
method or observeNotification.Name.passiveLocationDataSourceDidUpdate
notifications. (#2410) - The
NavigationViewController.route
andNavigationService.route
properties are now read-only. To change the route that the user is traveling along, set theNavigationViewController.indexedRoute
orNavigationService.indexedRoute
property instead, pairing the route with the index of the route in the originalRouteResponse
object. (#2366) - The following methods now require a route index to be passed in as an argumen...
v1.1.0-alpha.2
Changes since v1.1.0-alpha.1, including changes in v1.0.0-rc.3 through v1.0.0-rc.5:
Packaging
- Upgraded to MapboxDirections v1.0.0, MapboxSpeech v1.0.0, and Turf v1.0.0. (#2646)
- Updated various translations. (#2616, #2644)
Map
- The
MGLStyle.navigationDayStyleURL
andMGLStyle.navigationNightStyleURL
properties contain URLs to the Mapbox Navigation Day and Night v5 styles, both of which show traffic congestion lines on all roads by default. The traffic congestion layer is appropriate for a preview map; to tailor the style to turn-by-turn navigation, setMGLMapView.showsTraffic
tofalse
. (#2523) - Traffic congestion segments along the route line and the estimated arrival time periodically update to reflect current conditions when using the
DirectionsProfileIdentifier.automobileAvoidingTraffic
profile. These updates correspond to the newNotification.Name.routeControllerDidRefreshRoute
notification,NavigationServiceDelegate.navigationService(_:didRefresh:)
method, andNavigationViewControllerDelegate.navigationViewController(_:didRefresh:)
method. To disable these updates, setRouteOptions.refreshingEnabled
tofalse
. (#2366) - The route line now displays accurate and consistent traffic congestion segments. (#2580)
- Renamed the
NavigationMapView.routeLineTracksTraversal
property toNavigationViewController.routeLineTracksTraversal
and added theNavigationMapView.updateRoute(_:)
method for standalone map views. (#2581) - Added the
CarPlayNavigationViewController.routeLineTracksTraversal
property to hide portions of the route line that the user has already passed. (#2601) - Fixed an issue where
NavigationMapView
redrew at a low frame rate even when the device was plugged in. (#2643) - Fixed incorrect alignment of
MGLMapView.attributionButton
andMGLMapView.logoView
. (#2613) - Improved building highlighting for several edge cases (e.g., if the destination is within the threshold distance). (#2612)
- Fixed an issue where the route line flickered when refreshing. (#2642)
Visual instructions
- Added an alternative presentation for maneuver instructions that resembles swipeable user notification cards. To replace the conventional
TopBannerViewController
presentation with the cardlike presentation, create an instance ofInstructionsCardViewController
and pass it into theNavigationOptions(styles:navigationService:voiceController:topBanner:bottomBanner:)
method. (#2149, #2296, #2627) - Fixed a
NextBannerView
layout issue that occurred when two maneuvers were spaced close together. (#2607)
User location
RouteProgress
,RouteLegProgress
, andRouteStepProgress
now conform to theCodable
protocol. (#2615)- Added the
PassiveLocationDataSourceDelegate.passiveLocationDataSourceDidChangeAuthorization(_:)
method. (#2649) - Fixed a crash when installing a
PassiveLocationManager
as anMGLMapView
’s location manager on iOS 14 when Mapbox Maps SDK for iOS 6.2 is installed. (#2649) - Speculatively fixed a crash when installing a
PassiveLocationManager
as anMGLMapView
’s location manager. (#2633) - Fixed an issue where calls to
RouteController.location
could sometimes cause undefined behavior, including skipping instructions. (#2610) - The
RouteProgress.congestionTravelTimesSegmentsByStep
andRouteProgress.congestionTimesPerStep
properties are now read-only. (#2624)
Other changes
- Fixed an issue where
EndOfRouteViewController
was incorrectly positioned after changing the device’s orientation. (#2590) - Added a “Positioning” category to the feedback view controller. (#2621)
Known issues
- Carthage is unable to build some dependencies of this SDK using an Xcode 12 toolchain. As a workaround, downgrade to Xcode 11 or use this script instead of invoking
carthage
directly. (Carthage/Carthage#3019) - A crash occurs on launch in the iPhone 5 simulator. As a workaround, build and debug your application on an iPhone 5 device instead.
- The ETA label is too small. (#2645)
- The rating stars in the end-of-route feedback panel are cut off on iOS 10. (#2637)
- The categories in the feedback view controller have not been translated into many of the supported languages. (You can help!)
Documentation is available online or within Xcode.
v1.0.0-rc.5
Changes since v1.0.0-rc.4:
User interface
- Added an alternative presentation for maneuver instructions that resembles swipeable user notification cards. To replace the conventional
TopBannerViewController
presentation with the cardlike presentation, create an instance ofInstructionsCardViewController
and pass it into theNavigationOptions(styles:navigationService:voiceController:topBanner:bottomBanner:)
method. (#2149, #2296, #2627) - Added a “Positioning” category to the feedback view controller. (#2621)
- Updated various translations. (#2644)
User location
- Added the
PassiveLocationDataSourceDelegate.passiveLocationDataSourceDidChangeAuthorization(_:)
method. (#2649) - Fixed a crash when installing a
PassiveLocationManager
as anMGLMapView
’s location manager on iOS 14 when Mapbox Maps SDK for iOS 6.2 is installed. (#2649) - Speculatively fixed a crash when installing a
PassiveLocationManager
as anMGLMapView
’s location manager. (#2633) - The
RouteProgress.congestionTravelTimesSegmentsByStep
andRouteProgress.congestionTimesPerStep
properties are now read-only. (#2624)
Known issues
- Carthage is unable to build some dependencies of this SDK using an Xcode 12 toolchain. As a workaround, downgrade to Xcode 11 or use this script instead of invoking
carthage
directly. (Carthage/Carthage#3019) - A crash occurs on launch in the iPhone 5 simulator. As a workaround, build and debug your application on an iPhone 5 device instead.
- The ETA label is too small. (#2645)
- The rating stars in the end-of-route feedback panel are cut off on iOS 10. (#2637)
- The categories in the feedback view controller have not been translated into many of the supported languages. (You can help!)
- The route line flickers when refreshing. (#2602)
Documentation is available online or within Xcode.
v1.0.0-rc.4
Changes since v1.0.0-rc.3:
- Made timestamps consumed by
Navigator.getStatus
consistent. (#2610) - Fixed issue which was causing incorrect alignment of
MGLMapView.attributionButton
andMGLMapView.logoView
. (#2613) - Updated German and Vietnamese translations. (#2616)
- Improved alignment of instruction cards after device rotation. (#2614)
- Improved building highlighting for several edge cases (e.g. in case if destination is within threshold distance). (#2612)
- Fixed
NextBannerView
presentation in case of very closely spaced maneuvers. (#2607) - Added ability to switch on/off vanishing route line when using CarPlay. (#2601)
Known issues:
- Route refresh is causing vanishing route line flickering. (#2602)
Documentation is available online or within Xcode.
v1.0.0-rc.3
Changes since v1.0.0-rc.2:
- Traffic congestion segments along the route line and the estimated arrival time periodically update to reflect current conditions when using the
DirectionsProfileIdentifier.automobileAvoidingTraffic
profile. These updates correspond to the newNotification.Name.routeControllerDidRefreshRoute
notification,NavigationServiceDelegate.navigationService(_:didRefresh:)
method, andNavigationViewControllerDelegate.navigationViewController(_:didRefresh:)
method. To disable these updates, setRouteOptions.refreshingEnabled
tofalse
. (#2366) - The route line now displays accurate and consistent traffic congestion segments. (#2580)
- The
NavigationMapView.routeLineTracksTraversal
property is now inNavigationViewController.routeLineTracksTraversal
,NavigationMapView.updateRoute(_:)
is now publicly available. (#2581) EndOfRouteViewController
is now correctly positioned after changing device orientation. (#2590)- Production ready Navigation Day and Night Style URLs are used. (#2586)
- Second Level Feedback strings are now localizable. (#2576)
Known issues:
- The route line is always vanishing when using CarPlay. (#2600)
- Route refresh is causing vanishing route line flickering. (#2602)
Documentation is available online or within Xcode.
v1.1.0-alpha.1
Changes since v1.0.0-rc.2:
- Upgraded to Mapbox Maps SDK for iOS v6.1.0-beta.2. (#2565)
Documentation is available online or within Xcode.