iOS SDK Release notes | 2GIS Documentation
iOS SDK

Release notes

  • Improved the mechanism of getting marker object title ItemMarkerInfo.title. Now it is considered that a marker may have no title.
  • Fixed a potential issue during map initialization when a style could be installed before the initialization process was completed.
  • Fixed a potential freeze of MapObjectManager when objects are frequently added and removed using the MapObjectManager.removeAndAddObjects method.
  • Added additional verification of the correctness of handling the map tilt gesture so that it does not lead to an application crash.
  • Fixed an application crash when logging network requests.
  • Fixed an issue that caused MapViewOverlay to operate with interruptions when interacting with the map.
  • Fixed operation of SwiftUI elements for the map, which previously were recreated during each update of the interface.
  • Fixed road events display, which previously worked not for all regions.
  • Fixed the display of route arrows in relation to immersive roads of actual width in the navigation mode.
  • Fixes a potential issue that prevented the display of lane bubbles on the route in the navigation mode.
  • Fixed style issues when displaying a geolocation marker in the navigation mode with immersive roads of actual width.
  • Fixed style issues when displaying building floor plans.
  • Fixed a possible freeze of MapObjectManager when objects are frequently added and removed using the MapObjectManager.removeAndAddObjects method.
  • Added additional verification of correctness of handling the map tilt gesture so that it does not lead to an application crash.
  • Fixed an application crash when logging network requests.
  • Fixed an issue that caused MapViewOverlay to operate with interruptions when interacting with the map.
  • Fixed operation of SwiftUI elements for the map, which previously were recreated during each update of the interface.
  • Fixed road events display, which previously worked not for all regions.
  • Updated DgisSource.createDgisSource to return the hybrid tiles source of the default map in Full SDK version.
  • Improvements to the immersive roads of actual width operation in the navigation mode.
  • Fixed issues in styles when displaying immersive roads of actual width.
  • Fixed fog display at different map tilt angles.
  • Removed the Container.apiKeyOptions parameter. You can now explicitly pass the key file source using KeySource, KeyFromAsset, KeyFromFile,and KeyFromString.
  • Removed the Container.vendorConfigFile parameter. You can now explicitly pass the configuration file source using VendorConfig, VendorConfigFromAsset, VendorConfigFromFile, and VendorConfigFromString.
  • Removed Container.makeStyleFactory, Container.makeSearchManagerFactory, Container.makeSourceFactory, Container.makeImageFactory, and Container.makeLocaleManager methods. Instead, use Container.styleFactory, Container.searchManagerFactory, Container.sourceFactory, Container.imageFactory, and Container.localeManager fields.
  • Removed IPositioningServicesFactory and the Container.positioningServices. When creating a Container, pass Container.locationProvider and Container.magneticHeadingProvider separately.
  • Removed ILocationService. Instead, use LocationService with similar functionality.
  • Removed MyLocationController and MapLocationController.myLocationIndicatorController. To configure the marker geolocation source, use MyLocationControllerSettings. In the INavigationView, geolocation source is now not substituted.
  • Changed the HttpOptions structure while keeping its functionality.
  • Renamed fields in LogOptions: osLogLevel and customLogLevel are now systemLevel and customLevel correspondingly.
  • Renamed values in LogLevel: disabled and fault are now off and fatal correspondingly.
  • Removed the CameraState.followPosition value. Instead, see the Camera.behaviour value.
  • Extended values for SuggestedType, SuggestorType, and ObjectType so that they now correspond to Places API results.
  • MyLocationMapObjectMarkerType values are aligned with standard naming.
  • Removed the createRasterTileDataSource method. Added a new source of raster tiles RasterTileSource, which enables setting transparency for raster tiles.
  • Removed AudioVolume. You can now set instructions volume from 0 to 100 using AudioSettings.volume.
  • Removed AudioOptions and IAudioSettings. Use AudioSettings to configure sounds in the SDK.
  • RouteMapObjectDisplayFlag.immersiveRouteParts - flag to use immersive geometry on route parts.
  • Optimized caching of road events when displaying them on the map.
  • Fixed issues that prevented displaying route variants if an invalid variant was included into the list of public transport routes.
  • Fixed the record of the covered distance along an alternative route.
  • Improved the display of stops on public transport routes.
  • Improved erasing of the route when the route finish point is reached.
  • Fixed the active route display in poor GPS signal conditions.
  • Voice instructions are now not played during navigation in poor GPS signal conditions.
  • Distance to the next camera is not considered if it is less than 150 meters.
  • Voice instructions are not played when navigation starts.
  • Distance to intersection control cameras, public transport lanes, and road markings is not voiced.
  • Distance left on route is not voiced if other instructions are expected further on route.
  • Pedestrian obstacles and road subtypes for non-pedestrian routes are not voiced.
  • Added layers with immersive roads of actual width.
  • Improved various layers so that they are displayed properly if immersive roads of actual width are present on the map.
  • Updated geolocation marker designs in normal and navigation modes. Made the marker display in light and dark themes consistent.
  • Supported new Moscow Metro line MCD-4A.
  • Fixed styles of Moscow Metro lines MCD-3, MCD-4, MCD-4A, and MCD-5.
  • Added stop captions on public transport routes.
  • Enabled displaying stop captions when viewing the full route of a selected public transport.

For all types of Mobile SDK:

  • Styles must be exported again.
  • To ensure proper display of the geolocation marker, copy corresponding layers.
  • Removed the Container.apiKeyOptions parameter. You can now explicitly pass the key file source using KeySource, KeyFromAsset, KeyFromFile,and KeyFromString.
  • Removed the Container.vendorConfigFile parameter. You can now explicitly pass the configuration file source using VendorConfig, VendorConfigFromAsset, VendorConfigFromFile, and VendorConfigFromString.
  • Removed Container.makeStyleFactory, Container.makeSearchManagerFactory, Container.makeSourceFactory, Container.makeImageFactory, and Container.makeLocaleManager methods. Instead, use Container.styleFactory, Container.searchManagerFactory, Container.sourceFactory, Container.imageFactory, and Container.localeManager fields.
  • Removed IPositioningServicesFactory and the Container.positioningServices. When creating a Container, pass Container.locationProvider and Container.magneticHeadingProvider separately.
  • Removed ILocationService. Instead, use LocationService with similar functionality.
  • Removed MyLocationController and MapLocationController.myLocationIndicatorController. To configure the marker geolocation source, use MyLocationControllerSettings. In the INavigationView, geolocation source is now not substituted.
  • Changed the HttpOptions structure while keeping its functionality.
  • Renamed fields in LogOptions: osLogLevel and customLogLevel are now systemLevel and customLevel correspondingly.
  • Renamed values in LogLevel: disabled and fault are now off and fatal correspondingly.
  • Removed the CameraState.followPosition value. Instead, see the Camera.behaviour value.
  • Extended values for SuggestedType, SuggestorType, and ObjectType so that they now correspond to Places API results.
  • MyLocationMapObjectMarkerType values are aligned with standard naming.
  • Removed the createRasterTileDataSource method. Added a new source of raster tiles RasterTileSource, which enables setting transparency for raster tiles.

Additionally for the full version:

  • To ensure that immersive roads of actual width are displayed and other objects interact with them properly in the navigation mode, export latest Mobile SDK styles and apply your settings.
  • Removed AudioVolume. You can now set instructions volume from 0 to 100 using AudioSettings.volume.
  • Removed AudioOptions and IAudioSettings. Use AudioSettings to configure sounds in the SDK.
  • RouteMapObjectDisplayFlag.immersiveRouteParts - flag to use immersive geometry on route parts.
  • PackageInfo.finalSizeOnDisk - size of the disk space that the territory takes after installation, in bytes.
  • PackageInfo.currentSizeOnDisk - size of the disk space that currently installed territory files take, in bytes.
  • In the NavigationViewTheme added new parameters for customizing UI controls of the INavigationView. You can set the color of icons of the main and additional maneuvers, fonts for all UI controls, customize UI controls of the compass and the traffic jam score.
  • Fixed the map operation when the Metal API Validation setting is enabled in Xcode.
  • Fixed the process of updating a position in the clustering tree using MapObjectManager.withClustering when a marker position changes.
  • Updated the copyright design of a map snapshot created using the IMapSnapshotter.
  • Fixed issues that prevented MapViewOverlay from updating when parameters change.
  • In the INavigationView, the speedometer UI control is now displayed during bicycle navigation.
  • In the INavigationView, the position tracking UI control is now not hidden during pedestrian navigation.
  • 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.
  • 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.
  • Support of iOS version 12 is deprecated. Starting from the next version, SDK works only for iOS 13 or higher.
  • 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.
  • 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 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.

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

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 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 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: