Release notes
10.5.0 (2024-06-05)
🌟 Features and improvements
- You can now set a cascaded
appId
in the key settings. This allows you to link the key not to a particular application, but to a group of applications with the same identifier pattern. - Updated the copyright design.
🛠 Bug fixes
- Fixed SDK operation for CarPlay.
- When displaying markers using Marker, text labels do not overlap.
- Fixed the display of the geolocation marker when a direction sensor stops providing data.
10.4.0 (2024-05-20)
🌟 Features and improvements
- Added SwiftUI map elements: CurrentLocationView, ZoomView, TrafficView, IndoorView, CompassView. All elements can be created using the IMapControlViewFactory.
- ZoomFollowSettings.speedRangeToStyleZoomFreeRoamSequence became a setter.
🛠 Bug fixes
- Fixed an issue that led to a situation when changing a floor via IndoorBuilding.activeLevelIndex did not influence the IndoorControl display.
- Updated the
PrivacyInfo.xcprivacy
file.
❗ Breaking changes and backward compatibility
- You can now add only one source of the current location (MyLocationMapObjectSource) to a Map object.
- SDK now supports only iOS 13 or higher.
10.3.0 (2024-05-06)
🌟 Features and improvements
- Information about traffic jams in regions is now updated regardless of the update of the SDK configuration file.
- With the zoom level higher than 2, you now cannot move the map to display empty lanes at the top and bottom.
- Added an Arabic voice package for the navigation.
🛠 Bug fixes
- Fixed clustering via MapObjectManager.withClustering. Now the cluster hierarchy is rebuilt if the position of one marker is changed using Marker.position.
- Fixed incorrect handling of taps in Marker with the Lottie animation.
- Map.dataLoadingStateChannel does not freeze in the
loading
state in the geolocation following mode. - Added the
PrivacyInfo.xcprivacy
file.
❗ Breaking changes and backward compatibility
- Support of iOS version 12 is deprecated. Starting from the next version, SDK works only for iOS 13 or higher.
10.2.0 (2024-03-07)
🌟 Features and improvements
- CircleOptions.dashedStrokeOptions and Circle.dashedStrokeOptions options for creating a dashed circle or adding a dashed outline for an existing circle.
- RoadEventSource.setHighlighted method for highlighting road events with IDs from RoadEventMapObject.id.
- calculateClosestPoint function for obtaining the closes point on the map relative to the given point.
🛠 Bug fixes
- Fixes performance issues of
layedId
defined in MapObjectManager: now it impacts the display of clustered markers. - Fixed map rendering. Previously, it would freeze when a modal window is displayed above
MapView
. - Fixed map performance when the application is minimized.
🗺 Map style updates
- Download styles again to ensure valid operation of dashed circles.
10.1.0 (2024-01-16)
🌟 Features and improvements
- Added the DirectoryObject.buildingInfo structure with reference information about a building:
buildingName
,purposeName
,purposeCode
, andbuildingLevels
. DirectoryObject.buildingLevels is marked asdeprecated
and will be removed in the future major releases. - Added DirectoryObject.address.fiasCode - the FIAS (Federal Information Address System) code of a directory object.
- Added the
fiasCode
field (the FIAS code of the street) to DirectoryObject.address.components in AddressComponent.streetAddress and AddressComponent.number structures.
10.0.0 (2023-12-29)
🌟 Features and improvements
- Enabled immersive trees to be displayed on the map by default.
- Supported a new model for displaying the current location marker. To override the current location icon, pass MyLocationMapObjectMarkerType.svgIcon to the MyLocationMapObjectSource and edit a corresponding layer in styles.
- Added MarkerOptions.iconAnimationMode and Marker.iconAnimationMode to enable setting animation modes in markers. The mode can be normal or looped.
- Added SearchResult.actionWidgets and SearchResult.mainWidgets for dynamic filtering of the obtained search results. Added the Widget class that works as a widget for filtering search results.
- Added
locales
andsystemLocales
methods and corresponding channels to LocaleManager for getting all locales of an application and system locales. - Added the BaseCamera.changePosition method for changing only certain parameters of camera position. The method takes a new CameraPositionChange structure.
- Added the Camera.move method for launching animated map movement with a possibility to reset tilt following.
- Added the
styleZoomToTiltRelation
parameter for calcPosition and zoomOutToFit functions. The parameter represents a function of camera tilt angle dependence on the style zoom level. - Added the createDefaultStyleZoomToTiltRelation function for getting the dependence of the camera tilt angle on the style zoom level for the standard tilt following controller.
- Added the createDefaultMaxTiltRestriction function for getting the default dependence of the tilt angle restriction on the scale. By default, this dependence is set during map creation: BaseCamera.maxTiltRestriction.
- Added the BearingSource enum, a source of direction.
- Added the PackedMapState.cameraBehaviour field for serializing the camera tracking mode.
- Added the
error
field to PackageInfo: an error that occurs during an attempt to download and/or install a package. - Added the IndoorManager.setIndoorState method for managing the display of floor plans on the map.
- Added the NavigationManager.alternativeRouteSelector field for selecting an alternative route.
- Added the Route.bicycleLanes field: an indication of a dedicated cycle lane.
- Added the RoutePointKind.bicycleLane value: the beginning and end of a cycle lane.
- Added the PedestrianRouteSearchOptions.avoidUnderpassesAndOverpasses flag: avoid pedestrian underpasses and overpasses.
- Added the RouteMapObjectSource.replaceObject for replacing one route object in source with another.
- Added the NavigationFollowController.mapLocationController field. MapLocationController is a controller to manage map positioning in the navigator.
- Added the NavigationFollowController.cameraBehaviour field to enable changing the mode of map following the geolocation marker.
- Added the ZoomFollowSettings.speedRangeToStyleZoomFreeRoamSequence field: a sequence of speed ranges and corresponding scales in the FreeRoam navigation mode.
❗ Breaking changes and backward compatibility
-
Changed working with FollowController:
- Removed
createRawMyLocationController
andcreateSmoothMyLocationController
methods. Added the MyLocationController constructor for creating controllers of geolocation marker movements. - Removed
FollowBearing.satellite
andFollowBearing.magnetic
values because now you do not need to specify the direction source. Added the FollowBearing.on value for enabling the following mode (the source is selected automatically). - Removed the FollowPosition.tilt field. Now you need to enable tilt following separately. Added a new CameraBehaviour constructor with a
tilt
parameter to enable following only the tilt. - Removed
FollowValue.satelliteBearing
,FollowValue.magneticBearing
, andFollowValue.accuracy
values. Instead, added the FollowValue.bearing value with automatic selection of the source. - Removed
satelliteBearing
,magneticBearing
, andaccuracy
methods from the CustomFollowController interface. Added the CustomFollowController.bearing method instead. - Removed
setClock
,satelliteBearing
,magneticBearing
, andaccuracy
methods from FollowController. AddedonAddedToMap
,onRemovedFromMap
, andbearing
methods instead. - Removed the
FollowController.nextTimestampChannel
channel. Added FollowController.changedChannel instead. - Changed the signature of the FollowController.updateValues method.
- Removed the
PlatformLocationFollowController
controller. Instead, added BearingFollowController and CoordinatesFollowController controllers for following the map direction and map position coordinates respectively. - Changed the constructor of the StyleZoomFollowController controller. Removed the
StyleZoomFollowController.setAnimationDuration
method. - Changed the constructor of the TiltFollowController controller. Removed
TiltFollowController.setTilt
andTiltFollowController.setAnimationDuration
methods. - Replaced parameters of the FollowController.setThresholds with the typed ones.
- Removed the
FollowControllerClock
class. Changed the type of the FollowController.setClock method parameter to timestamp. - Removed
TransitionType
. The MyLocationControlModel constructor does not taketransitionType
now. Removed thetransitionType
parameter from the CameraBehaviour constructor. - Removed
MyLocationDirectionBehaviour
. The MyLocationMapObjectSource constructor of a geolocation source does not takedirectionBehaviour
now. Removed theMyLocationMapObjectSource.setDirectionBehaviour
method.
- Removed
-
Removed the BaseCamera.styleZoomToTiltRelation field.
-
Renamed the
MagneticHeadingProvider
class toHeadingProvider
. -
Constructors of Circle, Marker, Polygon, and Polyline are labeled as
throws
. -
Removed the MapOptions.mapRendererType option and the
MapRendererType
enum. Now Metal is always enabled for map rendering. -
Removed
Circle.position
andCircle.radius
setters. Instead, added Circle.setPosition and Circle.setRadius methods that can throw exceptions. -
Updated the Locale structure: now it is created based on separate
language
andregion
values. -
Removed PackageManager and Package from the SDK Map build. The product size has reduced.
-
Updated Voice.playWelcome to return Future, which becomes ready when sample playing is finished.
-
Removed the
RoadSubtype.stairway
field. Instead, added RoadSubtype.stairwayUp and RoadSubtype.stairwayDown fields for using stairways with explicit direction. -
Removed the NavigationFollowController.mapTiltController field.
-
Enabled throwing an exception when attempting to start the navigator in the guidance or simulation mode with a public transport route.
-
Disabled cashing of
FreeRoam
tiles during navigation. -
Updated MyLocationMapObjectSource for the navigator to be installed inside INavigationView.
❗ Known Issues
- When dynamic objects are updated frequently (around 100 FPS), the map freezes.
🛠 Bug fixes
-
Optimized re-rending of map frames after any changes.
-
Fixed the way traffic jams are displayed on the map depending on the zoom level.
-
Improved the smoothness of geolocation marker update.
-
Optimized and fixed map display for the latest iOS versions.
-
Fixed the behavior of the SimpleClusterObject.setIcon method during the first call.
-
Fixed clustering via MapObjectManager.withClustering that worked incorrectly with fractional values of
minZoom
andmaxZoom
. -
Updated the company logo in the copyright and map snapshots.
-
Fixed the exception returned if corrupted styles are loaded into the map.
-
Updated the behavior of MapOptions.appearance: when MapAppearance.default is set, the light theme is used by default.
-
Improved the calculation of the distance for playing preliminary instructions for a maneuver: now lanes are considered.
-
Improved the playing of the final phrase in the navigation mode: now pedestrian route is considered.
-
Fixed an issue that prevented lane callouts from displaying the route direction.
-
Fixed the creation of lane callouts: now speed limits are not considered.
-
Fixed the display of callouts for bus lanes going straight with "No entry" sign for other vehicles.
-
Fixed the display of route suggestions:
- Suggested better route is now not removed if a user explicitly declined switching to it.
- Alternative routes are now removed from the map when the interchange with them is too far from the following position even if they can still be attracted.
- Alternative routes that branch from the main route in the same point and are equally directed are now disregarded.
- Suggestion of a better route is now revoked when the route is not considered a better one anymore after updating the traffic jam data for the route.
-
Fixed camera warnings: now notifications of camera dummies are not voiced.
-
Fixed the INavigationView behavior to display only the remaining part of the route when requested to display the full route.
-
Disabled cashing of
FreeRoam
tiles during navigation by default. This is done to reduce the number of backend requests.
🗺 Map style updates
- Added styles for traffic lights.
- Added immersive models of trees and buildings.
- Added support of new lines of Moscow Metro: MCD-3 and MCD-4.
- Optimized immersive models of trees.
- Added a new model for displaying the current location marker.
Migration from versions 7.x to 10.х
For all types of Mobile SDK:
-
Styles must be downloaded again.
-
Changed the process of working with FollowController:
- Removed
createRawMyLocationController
andcreateSmoothMyLocationController
methods. Added the MyLocationController constructor for creating controllers of geolocation marker movements. - Removed
FollowBearing.satellite
andFollowBearing.magnetic
values because now you do not need to specify the direction source. Added the FollowBearing.on value for enabling the following mode (the source is selected automatically). - Removed the FollowPosition.tilt field. Now you need to enable tilt following separately. Added a new CameraBehaviour constructor with a
tilt
parameter to enable following only the tilt. - Removed
FollowValue.satelliteBearing
,FollowValue.magneticBearing
, andFollowValue.accuracy
values. Instead, added the FollowValue.bearing value with automatic selection of the source. - Removed
satelliteBearing
,magneticBearing
, andaccuracy
methods from the CustomFollowController interface. Added the CustomFollowController.bearing method instead. - Removed
setClock
,satelliteBearing
,magneticBearing
, andaccuracy
methods from FollowController. AddedonAddedToMap
,onRemovedFromMap
, andbearing
methods instead. - Removed the
FollowController.nextTimestampChannel
channel. Added FollowController.changedChannel instead. - Changed the signature of the FollowController.updateValues method.
- Removed the
PlatformLocationFollowController
controller. Instead, added BearingFollowController and CoordinatesFollowController controllers for following the map direction and map position coordinates respectively. - Changed the constructor of the StyleZoomFollowController controller. Removed the
StyleZoomFollowController.setAnimationDuration
method. - Changed the constructor of the TiltFollowController controller. Removed
TiltFollowController.setTilt
andTiltFollowController.setAnimationDuration
methods. - Replaced parameters of the FollowController.setThresholds with the typed ones.
- Removed the
FollowControllerClock
class. Changed the type of the FollowController.setClock method parameter to timestamp. - Removed
TransitionType
. The MyLocationControlModel constructor does not taketransitionType
now. Removed thetransitionType
parameter from the CameraBehaviour constructor. - Removed
MyLocationDirectionBehaviour
. The MyLocationMapObjectSource constructor of a geolocation source does not takedirectionBehaviour
now. Removed theMyLocationMapObjectSource.setDirectionBehaviour
method.
- Removed
-
Removed the BaseCamera.styleZoomToTiltRelation field.
-
Renamed the
MagneticHeadingProvider
class toHeadingProvider
. -
Constructors of Circle, Marker, Polygon, and Polyline are labeled as
throws
. -
Removed the MapOptions.mapRendererType option and the
MapRendererType
enum. Now Metal is always enabled for map rendering. -
Removed
Circle.position
andCircle.radius
setters. Instead, added Circle.setPosition and Circle.setRadius methods that can throw exceptions. -
Updated the Locale structure: now it is created based on separate
language
andregion
values. -
Removed PackageManager and Package from the SDK Map build. The product size has reduced.
Additionally for the full version:
- Updated Voice.playWelcome to return Future, which becomes ready when sample playing is finished.
- Removed the
RoadSubtype.stairway
field. Instead, added RoadSubtype.stairwayUp and RoadSubtype.stairwayDown fields for using stairways with explicit direction. - Removed the NavigationFollowController.mapTiltController field.
- Enabled throwing an exception when attempting to start the navigator in the guidance or simulation mode with a public transport route.
- Disabled cashing of
FreeRoam
tiles during navigation. - Updated MyLocationMapObjectSource for the navigator to be installed inside INavigationView.