iOS SDK Release notes | Urbi Documentation

Release notes

  • 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.
  • 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.
  • Added SwiftUI map elements: MapView, CurrentLocationView, ZoomView, TrafficView, IndoorView, CompassView. All elements can be created using the IMapControlViewFactory.
  • ZoomFollowSettings.speedRangeToStyleZoomFreeRoamSequence became a setter.
  • 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.
  • You can now add only one source of the current location (MyLocationMapObjectSource) to a Map object.
  • SDK now supports only iOS 13 or higher.
  • 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.
  • 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.
  • Support of iOS version 12 is deprecated. Starting from the next version, SDK works only for iOS 13 or higher.
  • 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.
  • 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.
  • Download styles again to ensure valid operation of dashed circles.
  • Added the DirectoryObject.buildingInfo structure with reference information about a building: buildingName, purposeName, purposeCode, and buildingLevels. DirectoryObject.buildingLevels is marked as deprecated 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.

For all types of Mobile SDK:

  • Styles must be downloaded again.

  • Changed the process of working with FollowController:

    • Removed createRawMyLocationController and createSmoothMyLocationController methods. Added the MyLocationController constructor for creating controllers of geolocation marker movements.
    • Removed FollowBearing.satellite and FollowBearing.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 tilt parameter to the CameraBehaviour constructor for tilt following. Added a new CameraBehaviour constructor with a tilt parameter to enable following only the tilt.
    • Removed FollowValue.satelliteBearing, FollowValue.magneticBearing, and FollowValue.accuracy values. Instead, added the FollowValue.bearing value with automatic selection of the source.
    • Removed satelliteBearing, magneticBearing, and accuracy methods from the CustomFollowController interface. Added the CustomFollowController.bearing method instead.
    • Removed setClock, satelliteBearing, magneticBearing, and accuracy methods from FollowController. Added onAddedToMap, onRemovedFromMap, and bearing 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 and TiltFollowController.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 take transitionType now. Removed the CameraBehaviour.transitionType field. Removed the transitionType parameter from the CameraBehaviour constructor.

  • Removed MyLocationDirectionBehaviour. The MyLocationMapObjectSource constructor of a geolocation source does not take directionBehaviour now. Removed the MyLocationMapObjectSource.setDirectionBehaviour method.

  • Removed the BaseCamera.styleZoomToTiltRelation field.

  • Renamed the MagneticHeadingProvider class to HeadingProvider.

  • 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 and Circle.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 and region 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 NavigationView.
  • 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 and systemLocales 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.
  • Changed working with FollowController:

    • Removed createRawMyLocationController and createSmoothMyLocationController methods. Added the MyLocationController constructor for creating controllers of geolocation marker movements.
    • Removed FollowBearing.satellite and FollowBearing.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 tilt parameter to the CameraBehaviour constructor for tilt following. Added a new CameraBehaviour constructor with a tilt parameter to enable following only the tilt.
    • Removed FollowValue.satelliteBearing, FollowValue.magneticBearing, and FollowValue.accuracy values. Instead, added the FollowValue.bearing value with automatic selection of the source.
    • Removed satelliteBearing, magneticBearing, and accuracy methods from the CustomFollowController interface. Added the CustomFollowController.bearing method instead.
    • Removed setClock, satelliteBearing, magneticBearing, and accuracy methods from FollowController. Added onAddedToMap, onRemovedFromMap, and bearing 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 and TiltFollowController.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 take transitionType now. Removed the CameraBehaviour.transitionType field. Removed the transitionType parameter from the CameraBehaviour constructor.
    • Removed MyLocationDirectionBehaviour. The MyLocationMapObjectSource constructor of a geolocation source does not take directionBehaviour now. Removed the MyLocationMapObjectSource.setDirectionBehaviour method.
  • Removed the BaseCamera.styleZoomToTiltRelation field.

  • Renamed the MagneticHeadingProvider class to HeadingProvider.

  • 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 and Circle.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 and region 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 NavigationView.

  • When dynamic objects are updated frequently (around 100 FPS), the map freezes.
  • 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 and maxZoom.

  • 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 NavigationView 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.

  • 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.
  • Fixed map rendering. Previously, map could freeze when a modal window is displayed above MapView.
  • Added MarkerOptions.iconAnimationMode and Marker.iconAnimationMode to enable setting animation modes in markers. The mode can be normal or looped.
  • Optimized and fixed map display for the latest iOS versions.
  • Fixed behavior of the SimpleClusterObject.setIcon method during the first call.
  • Fixed clustering via MapObjectManager.withClustering that worked incorrectly with fractional values of minZoom and maxZoom.
  • Updated the company logo in the copyright and map snapshots.
  • Fixed the NavigationView 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.
  • When forming a query to the directory via SearchQueryBuilder, the first value from the LocaleManager.locales method is always taken to determine the locale, if the locale could not be determined by the search area.
  • When creating a query in the directory using the SearchQueryBuilder, the current user's geolocation is no longer used to determine the locale. Instead, the first value from the LocaleManager.locales method is taken if an area for searching is not explicitly specified in the SearchQueryBuilder.
  • Fixed an error that occurred when accessing fields of SimpleClusterObject while forming a cluster in the implementation of the SimpleClusterRenderer.renderCluster method.
  • Added SearchQueryBuilder.fromRubricIds and SearchQueryBuilder.fromQueryTextAndRubricIds methods for creating search queries with filtering by rubric identifiers.
  • Added the DirectoryObject.tradeLicense field with information about the organization's license.
  • Enabled support for the directory to work with the new key format.
  • Fixed the retrieval of the map snapshot using the IMapSnapshotter.makeImage method when transitioning the application from the background to the foreground.
  • Corrected the calculation of remaining working time for organizations in Directory.workStatus during offline search.
  • The TUGC control in the FreeRoam mode is only available when adding a RoadEventSource to the map.
  • Enabled support for the directory to work with the new key format.
  • Fixed the retrieval of the map snapshot using the IMapSnapshotter.makeImage method when transitioning the application from the background to the foreground.
  • Enabled specifying excluded areas via ExcludedArea when searching for routes.
  • Added the display of the target branch name during the Indoor navigation to INavigationView.
  • Fixed the issue that appeared after double-tapping a map and changing the scale sharply.
  • Fixed the issue potentially causing program crashes when a marker is added to the map with a caption using Marker.
  • In INavigationView, fixed hiding map controls if a user is not interacting with the map for 10 seconds.
  • In INavigationView, fixed the button to add TUGC to the map in the ETA panel.

For all types of Mobile SDK:

  • Styles must be downloaded again.
  • Removed the DgisSource.createOnlineDgisSource and DgisSource.createOfflineDgisSource methods. Use DgisSource.createDgisSource with the additional DgisSourceWorkingMode parameter to set the map working mode. Four modes are available now: online, offline, hybridOnlineFirst, and hybridOfflineFirst.
  • The FollowController now returns StyleZoom instead of Zoom.
  • Renamed FollowValue.zoom to FollowValue.styleZoom.
  • Renamed ZoomFollowController to StyleZoomFollowController.
  • Renamed ZoomToTiltRelation to StyleZoomToTiltRelation.
  • Renamed SpeedRangeToZoom to SpeedRangeToStyleZoom.
  • The Projection.screenToMap method now returns a null value instead of exception if a point is located outside the map.
  • Removed the BaseCamera.setPadding method and the CameraPositionPointChangeBehaviour enum. Now the BaseCamera.padding field is a setter.
  • Removed the Camera.animatedMoveStarted and Camera.animatedMoveFinished methods. Use the Camera.stateChannel channel instead.
  • Labeled the SearchManager.createOnlineManager, SearchManager.createOfflineManager, and SearchManager.createSmartManager methods as throws.
  • Removed the BaseCamera.position and BaseCamera.zoomRestrictions setters. Labeled the BaseCamera.setPosition, BaseCamera.setZoomRestrictions, and BaseCamera.setPositionPoint methods as throws.
  • Removed the Map.fontIconSizeMultiplier setter. Labeled the Map.setFontIconSizeMultiplier method as throws.
  • Labeled the NavigationManager builder and the NavigationManager.start and NavigationManager.startSimulation methods as throws.
  • Labeled the Container.context getter and all other Container factory-methods as throws.

Additionally, for the full version:

  • Changed titles in the ZoomFollowSettings to better reflect their purpose.
  • Removed the Model.applyBetterRoute method. Instead, added the Model.betterRouteResponse method and the BetterRouteResponse enum to work with alternative routes.
  • Removed the State.freeRoam value. To determine if the navigator is in the Free Roam mode, you need to check if the RouteInfo.routeBuildOptions value is empty.
  • Enabled adding Lottie animation to a marker using Marker.icon. Added a method for getting Image with Lottie data to IImageFactory.
  • Added the IndoorControlModel UI model to implement the IndoorControl for floor plans.
  • Added the dynamicFilters field to the SearchResult: dynamic filters that can be additionally applied to search results.
  • Added the dynamic field to the DirectoryFilter to handle dynamic filters.
  • Added the BaseCamera.maxTiltRestriction method to define and obtain the function of dependence of the maximum camera tilt angle on the style zoom level.
  • Enabled creating the MapObjectManager with generalization of objects via MapObjectManager.withGeneralization.
  • Added the Projection.screenToMapClipped method that returns the map point nearest to the projection of the specified screen point.
  • In the navigator mode, alternative routes are now displayed and can be suggested as a better route. Model.betterRouteChannel is a channel for notifications about alternative routes appearing. Model.betterRouteResponse is a method for confirming an alternative route. Routes are configured with NavigationManager.alternativeRoutesProviderSettings.
  • Added the Voice.playWelcome method to play a voice sample in the navigator.
  • Added more types to RoutePointKind for identifying point objects on a route.
  • Enabled specifying excluded areas via ExcludedArea when searching for routes.
  • Added the display of the target branch name during the Indoor navigation to INavigationView.
  • Removed the DgisSource.createOnlineDgisSource and DgisSource.createOfflineDgisSource methods. Use DgisSource.createDgisSource with the additional DgisSourceWorkingMode parameter to set the map working mode. Four modes are available now: online, offline, hybridOnlineFirst, and hybridOfflineFirst.
  • The FollowController now returns StyleZoom instead of Zoom.
  • Renamed FollowValue.zoom to FollowValue.styleZoom.
  • Renamed ZoomFollowController to StyleZoomFollowController.
  • Renamed ZoomToTiltRelation to StyleZoomToTiltRelation.
  • Renamed SpeedRangeToZoom to SpeedRangeToStyleZoom.
  • The Projection.screenToMap method now returns a null value instead of exception if a point is located outside the map.
  • Removed the BaseCamera.setPadding method and the CameraPositionPointChangeBehaviour enum. Now the BaseCamera.padding field is a setter.
  • Removed the Camera.animatedMoveStarted and Camera.animatedMoveFinished methods. Use the Camera.stateChannel channel instead.
  • Labeled the SearchManager.createOnlineManager, SearchManager.createOfflineManager, and SearchManager.createSmartManager methods as throws.
  • Removed the BaseCamera.position and BaseCamera.zoomRestrictions setters. Labeled the BaseCamera.setPosition, BaseCamera.setZoomRestrictions, and BaseCamera.setPositionPoint methods as throws.
  • Removed the Map.fontIconSizeMultiplier setter. Labeled the Map.setFontIconSizeMultiplier method as throws.
  • Labeled the NavigationManager builder and the NavigationManager.start and NavigationManager.startSimulation methods as throws.
  • Labeled the Container.context getter and all other Container factory-methods as throws.
  • Changed titles in the ZoomFollowSettings to better reflect their purpose.
  • Removed the Model.applyBetterRoute method. Instead, added the Model.betterRouteResponse method and the BetterRouteResponse enum to work with alternative routes.
  • Removed the State.freeRoam value. To determine if the navigator is in the Free Roam mode, you need to check if the RouteInfo.routeBuildOptions value is empty.
  • Decreased the size of the full build by reducing the dependence of the offline directory on other modules.
  • Fixed memory leaks during the destruction of a map with active camera flying.
  • Optimized the usage of a single DgisSource data source added to two or more Map objects.
  • Fixed the Map.dataLoadingStateChannel channel performance so that it now considers any interactions with a map (for example, adding objects, changing themes, adding data sources).
  • If a camera position point is located closer to the bottom of the screen, the value of the maximum camera tilt angle can now be decreased.
  • In the navigation mode, a route is displayed on a map only after a position appears on the route.
  • Fixed returning to the tracking mode during the navigator default operation mode.
  • In INavigationView, fixed hiding map controls if a user is not interacting with the map for 10 seconds.
  • In INavigationView, fixed the button to add TUGC to the map in the ETA panel.
  • Added support for a Bus + No Entry icon in lane callouts.
  • Set gradient colors for an inactive route line.
  • Fixed issues causing program crashes while the key specifies restrictions for regions that do not have offline data.
  • Fixed issues causing program crashes while the map is rotating.
  • Fixed issues causing program crashes when markers with SVG images appear with animation.
  • Enabled the DgisSource.setHighlighted method to take building entrance IDs to add/remove highlight.
  • Fixed the representation of markers with SVG images.
  • Changed icon size for layers Parking lots with unknown price, Parking for persons with disabilities, Parking for residents, Parking for taxi, Free parking, and Covered parking.
  • For the dark theme, changed the caption color for layers Airport, Railway station, Bus terminal, and Port in the POI icons catalog.
  • Changed default parameters of the selected state of objects:
    • Fill and outline color for the Flat buildings catalog;
    • Top, wall, and outline color for the Building 3D catalog;
    • Icons for the following layers: Entrances, under buildings, Entrances, over buildings, Small gates, Boom gates, Parking lots with unknown price, Parking for persons with disabilities, Parking for residents, Parking for taxi, Free parking, and Covered parking.
    • Icons for the following catalogs: Sights (except for the Park layer in dark theme), POI icons (light theme only), Transport landmarks (light theme only), and Public transport stops icons (except for Railway station point and Stop point layers).
    • Icon size for the following catalogs: Parking lots bubbles (Paid parking, Parking lots with unknown price, Parking for residents, Parking for persons with disabilities, Parking for taxi, Free parking layers), POI icons (dark theme only), Transport landmarks (dark theme only), Sights (only for the Park layer in dark theme);
    • Icons and caption color for Metro stations icons (except for MCD 1 and MCD 2 layers) and Metro exits icons (except for MCD 1 and MCD 2 layers) catalogs;
    • Icon size and caption color for MCD 1 and MCD 2 layers in Metro stations icons and Metro exits icons catalogs;
    • Fill color for the Roads catalog (except for Intercity, background and Federal, background layers in the light theme);
    • Line width for the Roads catalog in the light theme (except for Walkways, Intercity, background, and Federal, background layers).
  • Added a new Entrances, arrows layer with selected state only.
  • Fixed issues causing program crashes when a Context object is removed.
  • Fixed issues causing program crashes when caching of map tiles fails.
  • Added new size parameter (map size) to the calcPosition method.
  • Fixed issues with the HttpOptions.timeout setting, which previously did not change the timeout of OnlineSearchManager/SmartSearchManager requests.
  • Disabled OpenStreetMap appearing in the copyright.
  • Fixed navigation failure if the data package misses voice instructions.
  • Fixed locale definition when creating requests via OnlineSearchManager.
  • Fixed issues when the Map object was not removed after the removal of MapView.
  • Fixed the ETA panel display in NavigationView during the transition to the Indoor mode.
  • Fixed issues that could result in a camera (in a rest state) flying to the current location after the navigation is finished.
  • Stopped using OpenGL as a graphic API due to its performance issues on devices with M1 or newer processors. Replaced it with Apple Metal.
  • Added pedestrian navigation inside buildings, which turns on when a created route takes floors into account (using the PedestrianRouteSearchOptions.useIndoor flag). When a user enters a building, the navigator UI displays a control panel with floor switches showing which floors the route passes. The bottom panel displays the floor number of the destination point. Added the IndoorDetector property to the NavigationManager class to define user location indoors in the navigation mode.
  • Enabled searching and displaying pedestrian routes inside building with floor plans.
    • The PedestrianRouteSearchOptions.useIndoor flag must be enabled during search (enabled by default).
    • The indoor route is displayed in dotted lines on an active floor. If RouteMapObjectDisplayFlag.inactiveFloors is enabled, the route is displayed on all floors.
    • In the transitions between floors icons with instructions are displayed, controlled by RouteMapObjectDisplayFlag.indoorInstructions.
    • To get information about floors that the rout passes, use Route.levels.
  • Added a new BaseCamera class to store primary camera settings. The Camera class is a child of BaseCamera. Additionally, added a clone method to the Base Camera class to copy cameras.
  • Added overloading for zoomOutToFit and calcPosition methods that takes an array of SimpleMapObject map objects instead of geometries.
  • Added TrafficRouter.findBriefRouteInfosmethod for quickly getting basic information about routes (travel time, length, etc.) without building them.
  • Added route search for scooters. To enable it, define ScooterRouteSearchOptions for TrafficRouter.findRoute.
  • Added information about altitude levels on the route: Route.altitudes.
  • Added information about restricted areas on the route: Route.truckRestrictedAreas, Route.vehicleRestrictedAreas.
  • Enabled cutting out the passed distance from both ends of the route: RouteMapObject.passedDistanceVisualization.
  • Added new RouteMapObject.replaceAllObjects method to create several displayed routes simultaneously.
  • Enabled configuration of bubble display on the route: RouteMapObject.calloutLabelFlags, RouteMapObject.calloutLabelDisplayMode.
  • Added RouteMapObject.permanentDisplayFlags to disable hiding of certain elements of a route when it cuts out.
  • Added a new NavigationFollowController class to control how a map follows the geolocation marker in the navigator.
  • Enabled getting a route bubble using Map.getRenderedObject. The returned object is of type RouteInfoCalloutMapObject.
  • Improved SmartSearchManager performance: any exceptions in OnlineSearchManager cause switching to OfflineSearchManager.
  • Added the pinchScalingCenter parameter to MapGestureViewOptions to define the point on the screen about which the map scales upon the scaling gesture.
  • Enabled defining IDs for request in WebAPI for On-premise keys.
  • Updated the logo in the map copyright.
  • Added the roadEventCreationEnabled flag to NavigationViewOptions to disable control of road events.
  • Enabled support of PPI on all models of iPhone 14 and iPad.
  • Added the locationService property to DGis.Container based on the ILocationService protocol to get the last known user location.
  • Added MapView.addObjectTappedCallback, MapView.addObjectLongTouchCallback, MapView.removeObjectTappedCallback, and MapView.removeLongTouchCallback methods to add or remove MapObjectTappedCallback (processors of taps and long presses on a map).
  • Added the makeNavigationView method with INavigationViewControlsFactory and INavigationMapControlsFactory parameters to INavigationViewFactory. This method allows you to redefine controls of the navigator and navigator maps. All controls are public now.
  • Added makeNavigationViewControlsFactory and makeNavigationMapControlsFactory methods to INavigationViewFactory to get navigator control factories and navigator map controls respectively.
  • Updated method signatures:
    • zoomOutToFit now takes only camera and geometry;
    • calcPosition now takes new parameters (screen area, tilt, bearing) so that you do not need to preset a camera to calculate position.
  • Removed the redundant RoutePosition class. Use RoutePoint instead.
  • Removed Model.cameraProgressChannel. Use the CameraNotifier instead.
  • Changed the type of Traffic.durations from SecondsRouteLongAttribute to MillisecondsRouteAttribute and increased value precision.
  • Changed the type of Route.obstacles to ObstacleInfoRouteAttribute and added additional information.
  • Enabled the ZoomFollowController builder to take the Map parameter.
  • Removed showOsmCopyright and osmCopyrightAnimationDuration methods from the MapView class.
  • Increased precision of displaying the remaining travel time in the navigator.
  • Changed the behavior of OfflineSearchManager: in case of empty result, it returns an empry list without raising and exception.
  • Changed the camera zoom level of INavigationView when the navigator starts.
  • Fixed the performance of the speed limit control in INavigationView. Now the zero limit is not displayed.
  • Forced the reset of camera settings after the navigation in INavigationView in finished.
  • Improved correctness of calculating points of difference between the primary route and a better one.
  • Fixed the performance of CompassControl.
  • Fixes locale definition in search queries. Now the region is defined based on the area of interest and the current user location.
  • Enabled verification of adding customer markers with empty images.
  • Fixed issues that caused a route selection panel and a better route disappear after the time out.
  • Added the logic of displaying pedestrian routes (Pedestrian route line group) and route objects (Point A, Point B, Route joints, Intermediate route points in the Dynamic objects group) on floors.
  • Added the Indoor instructions group with navigation instructions inside buildings.
  • Hid the Point A layer in the navigation mode.
  • Disabled display of Region border and Regions layers.
  • Defined gradient colors of an inactive route line.
  • Fixed the selector of paid parkings.
  • Moved the Intermediate route points, Route joints, Point A, and Point B layers after the Location precision radius layer.

For all types of Mobile SDK:

  • Updated method signatures:
    • zoomOutToFit now takes only camera and geometry;
    • calcPosition now takes new parameters (screen area, tilt, bearing) so that you do not need to preset a camera to calculate position.
  • Enabled the ZoomFollowController builder to take the Map parameter.
  • Removed showOsmCopyright and osmCopyrightAnimationDuration methods from the MapView class.

Additionally, for the full version:

  • Removed the redundant RoutePosition class. Use RoutePoint instead.
  • Removed Model.cameraProgressChannel. Use the CameraNotifier instead.
  • Changed the type of Traffic.durations from SecondsRouteLongAttribute to MillisecondsRouteAttribute and increased value precision.
  • Changed the type of Route.obstacles to ObstacleInfoRouteAttribute and added additional information.