iOS SDK Release notes | 2GIS Documentation
iOS SDK

Release notes

Important: API versions described below are deprecated. Use versions 10.0 or higher. See instructions on How to migrate from lower versions.

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

Release Date: January 11, 2023

  • Fixed navigation failure if the data package misses voice instructions.

Release Date: December 30, 2022

  • Fixed issues with the HttpOptions.timeout setting, which previously did not change the timeout of OnlineSearchManager/SmartSearchManager requests.
  • Disabled OpenStreetMap appearing in the copyright.

Release Date: November 16, 2023

  • Improved SmartSearchManager - now any exceptions in OnlineSearchManager switch to OfflineSearchManager.
  • In the MapGestureViewOptions appeared parameter pinchScalingCenter to set a point on the screen, relative to which the map is scaled by zoom gesture.
  • Now it's possible to set identifier for On-Premise key's requests to WebAPI.
  • In case of an empty result, OfflineSearchManager does not throw an exception, but returns an empty list.
  • Camera zoom was changed in NavigationView on navigator startup, closer to 2GIS main application.

Release Date: November 8, 2023

  • Support for PPI of all iPad models.
  • Implemented methods IMapView.addObjectTappedCallback, IMapView.addObjectLongPressCallback, IMapView.removeObjectTappedCallback, IMapView.removeLongPressCallback to add and remove MapObjectTappedCallback - tap and long-press map handlers.
  • In MapGestureViewOptions it's possible to set a point in pinchScalingCenter, relative to which map scale will be changed.
  • More correct calculation of divergence point between main route and better route.
  • Fixed the operation of the CompassControl compass control.
  • Fixed locale definition in search queries. The region is now determined through the area of interest or the user's current location.

Release Date: October 31, 2022

  • PPI support for all iPhone 14 models.
  • Added DGis.Container property locationService - implementation of the ILocationService protocol to get the last known location of the user.
  • Fixed an issue where a route would better disappear along with the route selection panel after a timeout.

Release Date: October 31, 2022

  • PPI support for all iPhone 14 models.
  • Fixed an issue where the route would better disappear along with the route selection bar after a timeout.

Release Date: October 31, 2022

  • PPI support for all iPhone 14 models.

Release Date: October 13, 2022

  • Updated the 2GIS logo in the copyright on the map.
  • The roadEventCreationEnabled flag appeared in NavigationViewOptions to disable the road event controller.
  • In INavigationView the speed limit controller has been fixed - now zero limit is not displayed.

Release Date: October 13, 2022

  • Updated the 2GIS logo in the copyright on the map.

Release Date: October 13, 2022

  • Updated the 2GIS logo in the copywriter on the map.

Release Date: September 29, 2022

  • Dropped OpenGL as graphics API in favor of Apple Metal, due to unstable OpenGL performance on devices with M1 or newer processors.
  • Added ability to search and display pedestrian routes in buildings with floor plans.
    • When searching, PedestrianRouteSearchOptions.useIndoor must be enabled (enabled by default).
    • The route in the building is displayed dashed on the active floor, and when RouteMapObjectDisplayFlag.inactiveFloors is enabled, it is displayed on all floors.
    • Icons with instructions are displayed on transitions between floors, their visibility is controlled by RouteMapObjectDisplayFlag.indoorInstructions.
    • To get information about the floors the route passes through, use Route.levels.
  • Added pedestrian navigation in the building (the feature is experimental and will be finalized). Enabled when route is built considering floors (with flag PedestrianRouteSearchOptions.useIndoor) when entering the building. Navigator's UI is changed - floor toggle control is displayed with marking which floors the route passes through, destination point's floor number is displayed in the bottom pane.
  • Added a method of getting basic information about routes (travel time, length, etc.) quickly without constructing them - TrafficRouter.findBriefRouteInfos.
  • Added fare search on scooters. To do this, set ScooterRouteSearchOptions in TrafficRouter.findRoute.
  • Added information about altitudes on the route - Route.altitudes.
  • Added information about prohibited routes - Route.truckRestrictedAreas, Route.vehicleRestrictedAreas.
  • Added ability to "eat" route from either end - RouteMapObject.passedDistanceVisualization.
  • Added method for simultaneous setting multiple routes RouteMapObject.replaceAllObjects.
  • Added settings for displaying bubbles on the route RouteMapObject.calloutLabelFlags, RouteMapObject.calloutLabelDisplayMode.
  • Ability to not hide some elements of the route as it "eats" - RouteMapObject.permanentDisplayFlags.
  • Added class to control map tracking for geoposition marker in navigator - NavigationFollowController.
  • Added ability to get route bubble through Map.getRenderedObject, the returned object has type RouteInfoCalloutMapObject.
  • Increased accuracy of displaying remaining travel time in navigator.
  • Removed RoutePosition, a redundant class, and used RoutePoint instead.
  • Removed Model.cameraProgressChannel, you must use class CameraNotifier instead.
  • Traffic.durations is now of type MillisecondsRouteAttribute instead of SecondsRouteLongAttribute and more accurate values.
  • The Route.obstacles now has the type ObstacleInfoRouteAttribute and contains additional information besides the obstacle type.
  • The constructor ZoomFollowController now takes the Map parameter.
  • Pedestrian route (Pedestrian route line group) and route objects (Point A, Point B, Route joints, Intermediate route points in the Dynamic objects group) have added logic for display on floors.
  • Added building navigation instructions - group Indoor instructions.

Release Date: August 26, 2022

  • Ability to set the font of the marker labels by specifying TextStyle.fontName - font name from the style editor.
  • New value of enum-a CameraState.followPosition - camera is in position tracking mode.
  • Optimized offline fare search - don't load unnecessary region data.
  • Fixed camera jerks during navigation at close maneuvers.
  • Fixed wiping of a route when navigation is restarted.
  • Fixed the crash when deleting the traffic jam source.
  • Fixed display of the navigator's maneuvers when driving on the left side of the road.
  • Improved operation of MyLocationControl - geo-positioning, switching between three tracking modes, displaying current mode.
  • Reduced the number of network requests for data on traffic jams when moving the map quickly.
  • Timeout errors when downloading the traffic score are not logged as an error.

Release Date: August 4, 2022

  • Fixed an exception in Map.visibleArea.
  • Localization of inscriptions on the map now uses all the languages defined in the system.
  • Localization of road event captions.
  • Fixed route rebuilding during navigation.
  • Changed the default value of the radius parameter in Map.getRenderedObjects.

Release Date: July 15, 2022

  • Fixed flickering of traffic jams when zooming the map.
  • Fixed display of stops and connection points on routes.
  • Fixed map update when locale is changed.
  • DirectoryObject.markerPosition.elevation can now have a non-zero elevation value.
  • Increased timeout of network fare search queries (the previous one was insufficient for long-distance routes).
  • Now it is not necessary to set deactivation_time in key if offline features are not used.
  • Fixed a crash when checking for intersections of geometries using the Geometry.intersects method.
  • Fixed potential crashes when running the map.
  • The enum value of RouteMapObjectDisplayFlag.tranportConnectionPoints has been renamed to transportConnectionPoints - corrected a typo.

For all types of Mobile SDK:

  • You need to contact 2GIS technical support to get a new key for using MobileSDK. It is obligatory to specify the appId of the application for which the key will be created. The received key file dgissdk.key should be added either to the application root or during MobileSDK initialization pass the object of structure ApiKeyOptions specifying the path to the file.
  • The APIKeys structure has been removed. Instead of it in Container.init the first parameter must be passed the object of the structure ApiKeyOptions which contains the path to the file dgissdk.key. The default ApiKeyOptions.default object tries to get the file from the root of the application.
  • Update styles.
  • Renamed the DirectoryObjectId class to DgisObjectId.
  • Removed serialize, deserialize functions for CameraPosition instead they should use new serialization mechanism - PackedMapState.
  • Removed methods SearchQueryBuilder.setLocation and SuggestQueryBuilder.setLocation - the value is automatically taken from the geoposition source.
  • Removed method PackedSearchQuery.location.
  • Removed SearchResultMarkerObject and SearchResultMarkerSource for generating search result tokens due to lack of ability to dynamically add or remove objects. As an alternative, the user is offered to implement token generation himself or use clustering.
  • When creating MyLocationMapObjectSource by default SmoothMyLocationController is used instead of RawMyLocationController.

Additionally for full version:

  • Removed lists with route information in RouteInfo - cameras, instructions, laneSigns etc. and current item indices - Model.cameraIndexChannel, Model.instructionIndexChannel. Instead the information should be obtained directly from the route and the current position, for example, get the nearest camera - Model.route.route.cameras.findNearForward(position).
  • Renamed the route search parameters:
    • BicycleRouteSearchOptions.avoidUnderpasses -> avoidUnderpassesAndOverpasses.
    • CarRouteSearchOptions.avoidFerry -> avoidFerries.
    • TruckRouteSearchOptions actualWeight, maxPermissibleWeight -> actualMass, maxPermittedMass.
  • The enum-a RoadType.road value is divided into subtypes RoadType.highway, RoadType.federalRoad, etc.
  • The VoiceSelector.setVoice method is replaced by the voice property.
  • Removed Model.durationChannel, Model.routeDurationChannel, instead Model.dynamicRouteInfo.traffic.durations.calculateDuration(routePoint).
  • Changed the set of enum-a RoadSurface values.
  • Removed Model.navigationActiveChannel, NavigationManager.uiSettings, instead a new class ActivityTracker is used to get navigator activity.

Release Date: July 13, 2022

  • Fixed crash when checking for intersecting geometries using the Geometry.intersects method.
  • Fixed potential crashes when running the map.

**Release Date:**June 17, 2022

  • Hybrid mode of operation.
    • Added the ability to download data for map, guidebook and fare finder operation, which will be used in the future when there is no internet connection. The TerritoryManager is used to download data about territories and get information about them.
    • For the map to work in hybrid mode, it is necessary to set a hybrid source in MapOptions.sources - [.dgisHybridSource].
    • Hybrid directory search engine - SearchManager.createSmartManager (but there are also separate createOnlineManager and createOfflineManager).
    • The fare search (TrafficRouter) is always hybrid - it uses online/offline data depending on its availability.
    • With TerritoriesAlongRouteProvider you can get a list of areas the route passes through.
  • Display of floor plans.
    • Occurs automatically when the map approaches large buildings (shopping malls, airports, etc.).
    • To get information about the floor plans and switch them, serves `IndoorManager'.
    • There is a ready-made UI controller for floor management - IndoorControl.
    • Dynamic objects (SimpleMapObject) can be placed on a specific floor plan using the parameter levelId.
  • Display pop-up tooltips with a bar above the navigator's route.
    • By default, RouteMapObjectDisplayFlag.lanesBubbles is set.
    • The positions of the cues on the route can be obtained with RouteMapObject.lanesCalloutPositions.
  • Information about events and traffic jams on the route in the navigator - Model.dynamicRouteInfo. To set its updating parameters, use NavigationManager.dynamicRouteInfoSettings.
  • To set the parameters of the route display in the navigator, use NavigationManager.routeMapSettings.
  • Automatic switch to Free Roam mode when leaving the route.
  • Added route search settings - NavigationManager.betterRouteProviderSettings.
  • Added fields with lane sign boundaries - RouteLaneSign.signStartPoint, signPoint, signEndPoint.
  • Added "avoid stairs" option on pedestrian routes - PedestrianRouteSearchOptions.avoidStairways.
  • Changed key logic. Now, when initializing MobileSDK, you need to pass the path to the file dgissdk.key, which contains information about the key.
  • New design of the Navigator NavigationView UI with all controls. The design coincides with the new navigator of the 2GIS application.
  • In addition to the updated design of controls in the new navigator:
    • The ability to set the color schemes of all the controls has appeared.
    • Defining callback function for the trip completion button. If the callback is not set, the button will not be displayed in the bottom pop-up bar.
    • By default, the display of lane callouts is enabled.
  • Bicycle specific attributes are added for bicycle routes, such as:
    • Route.badRoads - whether the road is bad.
    • ExtraInstructionInfo.bicycleCrossroad - bicycle instructions BicycleInstructionCrossroad, BicycleInstructionCrossroadManeuver, BicycleInstructionCrossroadManeuverDirection, BicycleInstructionCrossroadLandmark.
  • By default, the Free roam caching of tiles in the route mode is enabled. Use FreeRoamSettings.onRoutePrefetchLength, FreeRoamSettings.onRoutePrefetchRadiusMeters and FreeRoamSettings.cachePrefetchRadiusMeters to set caching.
  • Added flag TruckRouteSearchOptions.fallbackOnCar, which allows to search car route when truck route cannot be found.
  • Processing of clicks on building entrances. Added field DgisObjectId.entranceId - entry ID. It is populated for entrances received through Map.getRenderedObjects. Support for inputs in the directory will be added in future releases.
  • The navigator's "thermometer controller" that displays traffic jams on the route is ThermometerControlView.
  • Route overview in the navigator. Enabled by selecting the appropriate action on the Dashboard or by clicking on the `Thermometer.
  • Added protocols IMarkerView and IMarkerViewFactory to create UI View markers. You must use the IMarkerViewOverlay protocol to add these markers to the map.
  • Exit markers have appeared in the lane callouts.
  • Added information about exits to DirectoryObject - EntranceInfo.
  • Modified SearchManager.suggest to display entrances and apartments.
  • Modified SearchManager.searchByDirectoryObjectId and SearchManager.searchById to search the entryway by ID.
  • Added ability to customize the display of active and inactive routes through RouteEditorSource.activeDisplayFlags and RouteEditorSource.inactiveDisplayFlags.
  • Added RouteMapObjectDisplayFlag.bubbles flag to control the visibility of callouts on routes.
  • Added priorities for network requests, so that higher priority data is loaded first.
  • Added Map.dataLoadingStateChannel to track map loading status.
  • Reduced the size of the Mobile SDK map build.
  • Free Roam data caching. Caching settings can be configured with NavigationManager.freeRoamSettings.
  • Fixed an issue in which a camera that was voiced once on a route was no longer voiced when passing through it again.
  • Fixed search in offline and hybrid modes.
  • Optimized traffic jam update.
  • Disabled display of floor plans in navigation mode.
  • Optimized sending statistics in navigation mode.
  • Fixed the situation when can't load from network errors appeared in logs while displaying traffic events.
  • Optimized logic of route re-request.
  • Fixed problem with route remaining on the map at the end of a trip.
  • Fixed the order of drawing routes.
  • Displayed floor plans.
    • There are new catalogs with layers: Floor Squares, Organization Squares, Floor Walls, Organization Anchors, Floor Attractions, and Floor Captions.
    • All layers in the "3D Houses" catalog as well as the "3D Models" layer have changed the data selection condition.
  • It is required to reload the styles from the editor in order for the lane cues to appear.
  • The names of the layers have been translated into English.
  • Layer "Driveways above houses" became interactive - available for getting through Map.getRenderedObjects.
  • Removed layers "Traffic jams, bypass level [-3...3]".
  • Changed line width of "Traffic jams, background", "Traffic jams fill color level [-3..3]".
  • Added arrows parameters in "Car route line" folder for layers "Maneuver arrows, large scale, tracking mode", "Maneuver arrows, fine scale, tracking mode".
  • The text color, halo color and halo size were changed in "Traffic alerts along the route" and "Traffic alerts along the route, tracking mode" layers for "Small gates", "Stairs up", "End of pedestrian underpass", "Beginning of pedestrian underpass", "Stairs down", "Boom gate", "Speed hump".
  • Changes for new navigator: colors/sizes of traffic jams, route, maneuvers, new arrow model.
  • Support for placing SimpleMapObject objects on floors.

Release Date: June 9, 2022

  • Property MapObjectManager.isVisible - enable/disable displaying of all objects simultaneously.
  • Static map content is now loaded with higher priority than dynamic content.
  • Fixed potential UI thread blocking for a long time when working with the network.

Release Date: May 25, 2022

  • The MapObjectManager.isVisible property - enable/disable display of all objects simultaneously.
  • Processing of clicks on building entrances. Added field DgisObjectId.entranceId - entry ID. It is populated for entrances received through Map.getRenderedObjects. Support for inputs in the directory will be added in future releases.
  • The navigator's "thermometer controller" that displays traffic jams on the route is ThermometerControlView.
  • Route overview in the navigator. Activated by selecting appropriate action on Dashboard or clicking on ThermometerControlView.
  • Fixed display of traffic jams during tracking.
  • Removed Model.durationChannel, Model.routeDurationChannel, instead Model.dynamicRouteInfo.traffic.durations.calculateDuration(routePoint).
  • Changed the set of enum-a RoadSurface values.
  • Removed Model.navigationActiveChannel, NavigationManager.uiSettings, instead a new class ActivityTracker is used to get navigator activity.
  • Layer names have been translated into English.
  • The "Driveways above houses" layer is now interactive - available for retrieval via Map.getRenderedObjects.
  • Removed layers "Traffic circled level [-3..3]".
  • Changed line width of "Traffic jams, background", "Traffic jams fill color level [-3..3]".
  • Added arrows parameters in "Car route line" folder for layers "Maneuver arrows, large scale, tracking mode", "Maneuver arrows, fine scale, tracking mode".
  • The text color, halo color and halo size were changed in "Traffic alerts along the route" and "Traffic alerts along the route, tracking mode" layers for "Small gates", "Stairs up", "End of pedestrian underpass", "Beginning of pedestrian underpass", "Stairs down", "Boom gate", "Speed hump" in the night theme.

Release Date: May 18, 2022

  • Added ability to set the rendering layer SimpleObject when creating the MapObjectManager. Added parameter - layerId - ID of the layer of the new type Dynamic Object. When it is set, objects are placed on this layer, which allows you to set their order relative to other layers.
  • The situation is now taken into account when DGis.Container is not initialized from the main thread.
  • Fixed map hangs at high zoom and tilt angle values.
  • Fixed an issue where loading the map in hybrid mode would fill everything with a water polygon for a while.
  • Fixed an issue where the thickness of the added Polygon object would change at different zooms.
  • Optimized plug updates - now they are cached depending on the style zoom.

Release Date: May 4, 2022

  • Changed the logic of key handling. Now during MobileSDK initialization you have to pass path to dgissdk.key file, which contains information about the key.
  • New UI design for NavigationView navigator with all controls. The design coincides with the new navigator of the 2GIS application.
  • In addition to the updated design of controls in the new navigator:
    • The ability to set the color schemes of all the controls has appeared.
    • Defining callback function for the trip completion button. If the callback is not set, the button will not be displayed in the bottom pop-up bar.
    • By default, the display of lane callouts is enabled.
  • Added an option to set the rendering layer SimpleObject when creating MapObjectManager. Added parameter - layerId - the ID of the layer of the new type Dynamic Object. When it is set, objects are placed on this layer, which allows you to set their order relative to other layers.
  • In MapOptions.sources added ability to set hybrid map source via MapOptions.SourceDescriptor.dgisHybridSource.
  • Bicycle-specific attributes are added for bicycle routes, such as:
    • Route.badRoads - whether the road section is bad.
    • ExtraInstructionInfo.bicycleCrossroad - bicycle instructions BicycleInstructionCrossroad, BicycleInstructionCrossroadManeuver, BicycleInstructionCrossroadManeuverDirection, BicycleInstructionCrossroadLandmark.
  • By default, the Free roam caching of tiles in the route mode is enabled. Use FreeRoamSettings.onRoutePrefetchLength, FreeRoamSettings.onRoutePrefetchRadiusMeters and FreeRoamSettings.cachePrefetchRadiusMeters to set caching.
  • Added flag TruckRouteSearchOptions.fallbackOnCar, which allows to search truck route if truck route cannot be found.
  • Sending new field in events of navigator's statistics.
  • Support for iPhone SE 3 and iPad Air 5.
  • Faster addition of complex polygons to the map.
  • Fixed an issue where a camera that was voiced once on a route was no longer voiced when passing through it again.
  • Fixed search in offline and hybrid modes.
  • Optimized traffic jam update.
  • Disabled display of floor plans in navigation mode.
  • Optimized sending statistics in navigation mode.
  • Fixed the situation when can't load from network errors appeared in logs while displaying traffic events.
  • Optimized logic of route re-request.
  • Fixed problem when at the end of trip built route remained on the map.
  • The APIKeys structure has been removed. Instead, the first parameter in Container.init must be passed to the ApiKeyOptions structure object, which contains the path to the dgissdk.key file. The default ApiKeyOptions.default object tries to get the file from the root of the application.
  • Removed methods SearchQueryBuilder.setLocation and SuggestQueryBuilder.setLocation - value is automatically taken from geoposition source.
  • Removed method PackedSearchQuery.location.
  • Removed SearchResultMarkerObject and SearchResultMarkerSource for generating search result tokens due to lack of ability to dynamically add or remove objects. As an alternative, the user is offered to implement token generation himself or use clustering.
  • When creating MyLocationMapObjectSource, SmoothMyLocationController is used by default instead of RawMyLocationController.
  • Changes for the new navigator: colors/size of traffic jams, route, maneuvers, new arrow model.
  • Support for SimpleMapObject placement on floors.

Release Date: April 19, 2022

  • Sending a new field in navigator statistics events.
  • Support for iPhone SE 3 and iPad Air 5.
  • Faster addition of complex polygons to the map.
  • Fixed updating traffic jams on the route.
  • Caching of traffic events.
  • Improved ETA update algorithm on the route.
  • The SearchQueryBuilder.setLocation and SuggestQueryBuilder.setLocation methods are marked as deprecated - the value is automatically taken from the geoposition source.

Release Date: April 4, 2022

  • Hybrid mode of operation.
    • Added the ability to download data for map, directory and fare finder operations, which will be used in the future when there is no internet connection. The TerritoryManager is used to download data about territories and get information about them.
    • For the map to work in hybrid mode, it is necessary to set both online and offline sources at once in MapOptions.sources - [.dgisOnlineSource, .dgisOfflineSource].
    • Hybrid directory search engine - SearchManager.createSmartManager (but there are also separate createOnlineManager and createOfflineManager).
    • The fare search (TrafficRouter) is always hybrid - it uses online/offline data depending on its availability.
    • With TerritoriesAlongRouteProvider you can get a list of areas the route passes through.
  • Displays floor plans.
    • It happens automatically when the map approaches large buildings (shopping malls, airports, etc.).
    • To get information about floor plans and switch them, the IndoorManager is used.
    • There is a ready-made UI controller for floor management - IndoorControl.
    • Dynamic objects (SimpleMapObject) can be placed on a specific floor plan using the parameter levelId.
  • Display pop-up tooltips with a lanes above the navigator's route.
    • Off by default. You can turn it on by setting RouteMapObjectDisplayFlag.lanesBubbles in RouteMapObject.displayFlags, RouteMapSettings.onRouteDisplayFlags or RouteMapSettings.freeRoamDisplayFlags.
    • Cue positions on the route can be obtained with RouteMapObject.lanesCalloutPositions.
  • Information about events and traffic jams on the route in the navigator - Model.dynamicRouteInfo. To set its updating parameters, use NavigationManager.dynamicRouteInfoSettings.
  • To set the parameters of the route display in the navigator, use NavigationManager.routeMapSettings.
  • Automatic switch to Free Roam mode when leaving the route.
  • Added route search settings - NavigationManager.betterRouteProviderSettings.
  • Added fields with lane sign boundaries - RouteLaneSign.signStartPoint, signPoint, signEndPoint.
  • Added "avoid stairs" option on pedestrian routes - PedestrianRouteSearchOptions.avoidStairways.
  • Fixed the update of traffic jams on the route.
  • Free Roam data caching. Caching settings can be configured with NavigationManager.freeRoamSettings.
  • Traffic event caching.

Map version:

  • The DirectoryObjectId class has been renamed to DgisObjectId.
  • Removed serialize, deserialize functions for CameraPosition instead they should use new serialization mechanism - PackedMapState.

Full version:

  • Removed lists with route information in RouteInfo - cameras, instructions, laneSigns etc. and current element indices - Model.cameraIndexChannel, Model.instructionIndexChannel. Instead the information should be obtained directly from the route and the current position, for example, get the nearest camera - Model.route.route.cameras.findNearForward(position).
  • Renamed the route search parameters:
    • BicycleRouteSearchOptions.avoidUnderpasses -> avoidUnderpassesAndOverpasses.
    • CarRouteSearchOptions.avoidFerry -> avoidFerries.
    • TruckRouteSearchOptions actualWeight, maxPermissibleWeight -> actualMass, maxPermittedMass.
  • The enum-a RoadType.road value is divided into subtypes RoadType.highway, RoadType.federalRoad, etc.
  • The VoiceSelector.setVoice method is replaced by the voice property.

Release Date: March 23, 2022

  • Event in stats about navigator settings change while navigating.
  • Event in navigator statistics about leaving a route and returning to it.
  • Fixed Map.getRenderedObjects operation with transparent polygons.
  • Fixed update of traffic data in navigator UI model (RouteInfo.trafficRoute.traffic).
  • Corrected order of maneuver arrows overlapping in navigator.
  • Bicycle routes now follow the sidewalk instead of the roadway.
  • Handled null identifier in SearchManager.searchById, searchByDirectoryObjectId methods.
List of changes
"Ocean"
For the day and night theme, the font size is at [z2:9.15 ... z4:12.5].
The labeling indents for the text in the night theme changed from 10.1 to 20, now as in the day theme.

"Large Sea"
For the daytime and nighttime theme, the font size is [z3:9.15 ... z5:10.85].

"Small Sea and Large Lake"
For the daytime and nighttime theme, the font size is at [z3.5:9.5 ... z6:11.65].
The labeling indents for text in the daytime theme changed from 40.1 to 20, now as in the nighttime theme.

"Small Lake"
For the daytime and nighttime theme, the font size has been changed to 9.15.
text indents for the night theme, changed from 20 to 0, the same as for the day theme.

"2GIS countries"
For daytime and nighttime themes, font size to [z2:10 ... z5:15].
For the daytime and nighttime theme, the indentation of the labeling has been changed to 5.

"Large Countries"
For the daytime and nighttime theme, the font size at [z2:10 ... z5:15].

"Middle Countries"
For the day and night theme, the font size is changed to [z2:10 ... z4:12.5].
For the daytime and nighttime theme, the indentation of the labeling is changed to 10.

"Small Countries"
For the day and night theme, the font size has been changed to 10.85.
The indents for the day and night topics were changed to 5.

"Regions"
For the day and night theme, the font size has been changed to [z6:10.85 ... z9:16.65].

"Mid-Cities"
For the daytime and nighttime theme, the font size is [z6:10 ... z9:13.75].

"Small Cities"
For day and night theme, the font size is [z6:9.15 ... z9:12.9].
For the night theme, the sublayer filter has been changed to "City_small", now as in the day theme.
For the night and day theme, the object_class filter has been changed to "universe_city".

"Regional Centers"
For the daytime and nighttime theme, the font size has been changed to [z4.5:9.15 ... z9:13.75].

"2GIS Small Cities"
For daytime and nighttime theme, the font size is at [z6:10 ... z9:13.75].

"Major Cities"
For the daytime and nighttime theme, the font size is [z5:10 ... z9:15].
For the day and night theme, changed the icon size to 5.85.
For the night theme the indentation of the labeling has been changed by 20.

"Middle Cities 2GIS"
For day and night themes, the font size has been changed to [z4:8.35 ... z9:15].
Icon size changed to 5.85 for daytime and nighttime theme.

"2GIS Major Cities"
For the day and night theme changed the icon size to 5.85.
For the day and night themes changed the font size to [z3:8.35 ... z9:15].
For day and night theme, changed the indentation of the labeling to 5.
For the night theme changed sample filters: sublayer = city_2gis_big, objectClass = universe_city_2gis, universe_city_2gis_rc, now as in the day theme.

"Small Capitals"
For the day and night themes changed the icon size to 7.5.
For day and night themes changed the font size to [z6:11.65 ... z11:18.35].
For day theme changed sampling filters, brought in line with night theme.
For the day and night themes changed the indentation of the labeling to 4.

"Capitals"
For the night theme, changed the sampling filters to match the day theme.
For the day and night themes changed the font sizes to [z3:9.15 ... z11:18.35].
For the daytime and nighttime theme changed the icon size to 7.5.

"2GIS Capitals"
For the daytime and nighttime theme, the font size has been changed to [z3:9.15 ... z11:18.35].
For the day and night theme changed the icon size to 7.5.
For day and night themes the indentation of the labeling has been changed to 4.

"Arteries"
For the night theme, the base for the width interpolation logarithm has been changed to 2, now as in the day theme.

"Walkways"
For the night theme, the width has been changed to [z16.5:1.1 ... z19:3], also the interpolation has been changed to linear, now as in the day theme.
For night and day theme, filter by db_sublayer changed, "Pedestrian_road_park_footpath", "Pedestrian_road_park_path" and "Pedestrian_street" added.

"Intra-block arrows"
For the day theme, changed the indentation from the edges of the line to place the arrows to 2, now as in the night theme.
For the night theme, changed the sublayer filter to Oneway_internal_road.

"Arrows Other"
For the day theme, changed the indent from the edges of the line to place arrows to 2, now as in the night theme.
For the night theme, the sublayer filter has been adjusted to match the day theme.

"Arrows of highways"
For the day theme, the indent from the edges of the line to place arrows has been changed to 2, now as in the night theme.

"Traffic jam backing", "Traffic jam fill level -3", "Traffic jam fill level -2", "Traffic jam fill level -1", "Traffic jam fill level 0", "Traffic jam fill level 1", "Traffic jam fill level 2", "Traffic jam fill level 3"
The line shift animation type was changed for the night theme, now it is linear like in the day theme.

"Water Transport"
For the night theme, the stroke length has been changed to [z14:2.3 ... z20:4.1], now as in the day theme.

"Tram Dotted"
For the night theme, the stroke length has been changed to [z15:8 ... z19:40.1], now as in the day theme.

"Entrances under houses"
For the night theme, the icon size has been changed to [z17:6 ... z18.5:11], now as in the day theme.

"Entrances above houses"
For the night theme, change the icon size to [z17:6 ... z18.5:11], now as in the day theme.

"Route line on subway carpet pad", "Route line on subway outline"
In daytime theme s_dvg_public_pedestrianan_route_mobile removed from filters.

"Lookout", "Natural Monument", "Waterfall", "Helipad", "Beach", "Ski Area", "Information", "Garden", "Bridge", "Boat Station", "Skate Park", "Lifeguard", "Changing Room", "Water", "Rink", "Winter Equipment Rental", "Trees", "Attractions", "Ruins", "Paintball", "Stage", "Dance Floor", "Shower Booth", "Christmas Tree Bazaar", "Enclosure", "Homestead", "Crossing", "Monument", "Decorative Structure", "Gazebo", "Bookcrossing", "Graffiti", "Fountain", "Dog Walking Place", "Shooting Range", "Equipment Rental", "Playground", "Karting", "Toilet", "Sports Equipment"
For the day theme, the icon size was changed to [z14:12 ... z16:14], like in the night theme.

"Viewpoint", "Natural Monument", "Waterfall", "Park", "Beach"
Font size changed to 16.

"Park"
For the night theme, the icon size has been changed to [z14:18 ... z18:24], now as in the day theme.

"Water" (POI)
In the daytime theme, added "springs" to the filters in the objectClass.

"Shooting gallery"
In the night theme, replaced the icon with "poi_shootingrange", now as in the day theme.

"Sports equipment"
For the night and day theme changed the indentation of the labeling to 5.
For the day theme, the icon size has been changed to [z14:12 ... z16:14], now as in the night theme.

"Other captions"
For the night theme, the sublayer filter has been changed to "Other_caption_point", now as in the day theme.
For night theme changed minimum zoom to 15, now as in day theme.

"Other captions along the line"
For the night and day theme, changed the indentation from the edges of the line to place the caption to 5.
For the night and day theme, changed the distance between caption duplicates along the line to 1000.
For the night and day theme, changed the additional indentation of the labeling along the edges by 5.
For the night and day theme, the font size has been changed to [z15.5:10 ... z18:14].

"Special captions along the line"
For the daytime theme, the Noto_Sans font is explicitly specified, now as in the nighttime theme.
For the night and day theme, the indentation from the edges of the line to place the caption has been changed to 0.
For the night and day theme, the additional indentation of the labeling on the edges has been changed to 8.
For the night theme, changed the distance between duplicate lettering along the line to 200, as in the day theme.

"River Captions"
For the night theme, changed the indentation from the edges of the line to place the caption to 0, now as in the day theme.
For night and day theme, textDuplicationSpacing changed to [z12:500 ... z18:1000].

"House numbers"
For the night theme, the minimum zoom has been changed to 15.3, now as in the day theme.

"ATM"
For night theme changed filter for sublayer, now "Low_zoom_poi_navigator", like in day theme.

"Clothing Shop", "Beauty Shop", "Coffee Shop", "Go-Karting", "Fitness Club", "Bar", "Chapel", "Aviation Club", "Car Service", "Shoe Shop"
For the night theme, the sublayer filter has been changed to "Low_zoom_poi", as in the day theme.

"Kindergarten", "Ticket Office", "Tennis Club", "Swimming Pool", "Rink", "Post Office", "Education", "Library", "Church", "Synagogue", "Datsan", "Mosque", "Medical Facility", "Sanatorium", "Hotel"
For the night theme, the sublayer filter has been changed, now "Medium_zoom_poi", as in the day theme.

"Mall", "Administration", "Pharmacy", "Police"
For the night theme, the sublayer filter has been changed to "Medium_zoom_poi_navigator" as in the day theme.
For night and day theme changed icon size to [z14:18 ... z18:24].

"Theater", "Cinema", "Golf Club", "Hippodrome", "Stadium", "Business Center"
For the night theme, changed the sublayer filter, now "High_zoom_poi", as in the day theme.

"Shopping Mall", "Gas Station", "Charging Station"
For the night theme, the sublayer filter has been changed to "High_zoom_poi_navigator" as in the day theme.

"Airport"
in directory "POI icons" for night theme changed fonts size to [z14.5:10.1 ... z18:12], now as in day theme.
In the "Transport sights" directory for the night and day theme changed the minimum zoom to 7.5.

"Railway station"
in directory "POI icons" for night theme changed fonts size to [z14.5:10.1 ... z18:12], now as in day theme.
In the "Transportation Sights" catalog for the daytime theme, changed to a minimum zoom of 7.5.

"Bus Station"
In the "POI icons" catalog for the night theme, the object_class filter has been changed, now "bus_station", as in the day theme.
In the "Transport sights" catalog, the minimum zoom has been changed to 11 for the night and day theme.

"Port"
in directory "POI icons" for night theme changed the size of icons to [z14:18 ... z18:24], now as in the day theme.
In the catalog "Transport sights" for the night and day theme changed the minimum zoom to 11.

"Railroad stations point"
For the daytime theme, the icon size has been changed to 6, now as in the nighttime theme.

"Chairlift"
For the night theme, the icon has been changed to "chairlift", now as in the day theme.

"Surface lift".
For the night theme, the icon has been changed to "bugel", now as in the day theme.

"Dark green" from the "Subway station icons" catalog
Icons width was changed to 12 for the night theme.

"MCD 1", "MCD 2" from the "Subway icons" catalog
For the night theme minimal zoom is changed to 12, now as in the daytime theme.

"MCSD 1", "MCSD 2" from the "Subway icons" catalog
For the day theme, the width of the subway icons has been replaced by 22, now as in the night theme.

"Turquoise", "Blue", "Yellow", "Green", "Brown", "Red", "Orange", "Gray", "Blue", "Dark Green", "Purple", "Gray-Blue", "MCC", "Pink" from the "Subway Icons" catalog
Icons width was changed to 15 for Daytime theme.

"Light-green" from the "Icons of subway exits" catalog
The icon width was changed to 15 for the night and day theme.

"City captions with dots"
For the night and day theme, the font size has been changed to [z6:11.5 ... z15:20].
For the night and day theme, the indentation of the labeling has been replaced by 16.

"Main City Caption"
for the night theme the font size has been changed to [z0:10.1 ... z11:22 ... z11.9:22 ... z12:24], now as in the day theme.
for the night theme changed the indentation of the labeling to 30, now as in the day theme.

"Camera of unknown assignment", "Speed camera" and others in the "Traffic events on route" and "Traffic events on route in maintenance mode" directories
For the night theme, the priority of text and priority of icons for labeling have been changed to 160, now as in the day theme.

"Camera of Unknown Assignment"
In the "Traffic events on route" directory, the text and icons priority for labeling have been changed to 160 for the daytime theme.

"Speed camera_80"
In the "Traffic events on the route" catalog for the daytime theme, the sublayer filter has been changed to "s_dvg_route_camera_80", now as in the nighttime theme.

"Speed camera" from the catalog "Traffic events on the route in the maintenance mode"
The icon size for the night theme has been changed to 28, now it is the same as in the day theme.
For the night theme, the condition for navigatorOn in the filter is now the same as for the day theme.

"Speed camera_100"
In the "Traffic events on route in maintenance mode" folder of the daytime theme, changed the icon's anchor point to [0.4, 1], now it is the same as in the night theme.

Changed the order of drawing traffic jams. Traffic jams are drawn before houses.

In the night theme, the "Active underground pedestrian route line" layer (there are two of them) is renamed to "Active underground pedestrian route line".

In the night theme, the "Active underground pedestrian route line copy" layer has been renamed to "Active pedestrian route line".

In the night theme, the "Other line captions" layer has been renamed to "Other line captions".

In the night theme, the "Special Line Captions" layer has been renamed to "Special Line Captions".

The "Industrial area" layer in the night theme was renamed to "Industrial area".

In the night theme the "Beginning and end of toll roads" layer was renamed to "Beginning and end of toll roads".

Added "Bus Station" layer in Daytime and Nighttime themes.

Layer "Shoe store" and "Cinema" in the daytime theme have changed the data sampling filter.

The icon priority was changed to 160 for the "Speed camera" layer in the "Traffic events on route" directory in the daytime theme.

Icon priority for the "Speed camera of unknown purpose" layer in the "Traffic events on route in maintenance mode" catalog in the daytime theme was changed to 160.

The icon size of the layer "Graffiti" in the night theme has been changed to z14:12 . z16:14.

All layers in the directory "POI icons" in the night theme now have an icon size of z14:18 ... z18:24.

The "Airport", "Railway station", "Bus station", "Port" layers in "POI icons" folder in night theme have rgba(255,255,255,0.5) stroke color now.

The "Inactive auto route line" and "Inactive auto route line carpet pad" layers are now separated into a separate "Inactive auto route line" catalog.

The "Speed camera" layer in the "Traffic events on route in maintenance mode" directory has been changed to icon priority 160.

The maximum scale in the editor is a strict boundary. Since you can set z 20 in Mobile SDK, and on some latitudes it corresponds to the style z 20, objects with a maximum scale of 20 may hide in this situation. Because of that, you can now set the maximum scale more than 20 in the editor, and in the style templates for Mobile SDK all such layers are set to maximum scale 21.

In night theme all layers in directory "POI icons" color of stroke was changed to rgba(0,0,0,0.19).

Release Date: March 16, 2022

  • Disabled accessibility in copyright control.

Release Date: March 11, 2022

  • Fixed update of traffic jams along the route.
  • Fixed bug when sending fare finder statistics.

Release Date: March 4, 2022

  • Added warnings and errors to the log in case support for a particular MobileSDK version expires or has expired.
  • Supported CarRouteSearchOptions.avoidFerry filter to prohibit ferrying.
  • Gesture handlers IMapGestureInputController.didDoubleTap and IMapGestureInputController.didTwoFingerTap now have ability to set gesture work position.
  • When sending statistics, the events handled are:
    • Completion of the alternate route request
    • Change of the index of the next intermediate route point
    • Updates of dynamic route information
  • Fixed a bug where the carriage boarding description was invalid on routes on public transport when no carriage information was available.
  • Calling Camera.setPadding and Camera.setPositionPoint with the CameraPositionPointChangeBehaviour.keepCamera parameter now resets position tracking.
  • Fixed an issue with rendering some regions.
  • Fixed an issue with sending statistics related to generating an event after reaching an endpoint.
  • In NavigationView the problem, in which the second and subsequent routes are built not to the specified point was fixed.
  • Now if you sent a request to find a new route, but returned to the current route before receiving it, the requests for a better route are sent.
  • The TrafficRouter.findRoute method now returns an empty list instead of throwing an exception if no routes are found.

Release Date: February 25, 2022

  • Added network request logging at log info and verbose level.
  • Fixed sending stats with mobile network generation. Used to send invalid null values.

Release Date: February 25, 2022

  • Added network request logging at log info and verbose level.
  • Fixed sending stats with mobile network generation. Used to send invalid null values.

Release Date: February 21, 2022

  • Fixed sending of stats about navigation start.

Release Date: February 10, 2022

  • Smooth flight when geo-position tracking is activated - CameraBehaviour.transitionType (default TransitionType.SMOOTH - enabled).
  • Ability to set settings that are not available through the API (eg, URLs of web services) - parameter vendorConfig in the constructor Container - json-file with settings. The settings set is currently undocumented.
  • Automatically switching to a route is better if the user continued on it.
  • Sending statistics on fare search and navigation performance.
  • Text description of cars recommended for boarding - PublicTransportInfo.boardingSuggest. For example, "board the first car".
  • Displaying cars recommended for boarding in the route card (PublicTransportCard).
  • Information about the schedule of a traffic event - RoadEvent.schedule.
  • Display traffic event schedule in the event card (RoadEventCard).
  • Auxiliary methods GeoPoint.isValid, GeoRect.isValid, GeoRect.contains, GeoRect.intersects, GeoRect.expand.
  • Get bounding rectangle of geometry - Geometry.bounds, GeometryMapObject.bounds, SimpleMapObject.bounds.
  • Ability to get current navigator's voice - VoiceSelector.voice.
  • Using the system HTTP client instead of CURL.
  • Ability to define your own implementation of the HTTP-client - IHTTPClient.
  • Optimization of displaying traffic jams on the map.
  • Optimized adding of route to the map.
  • Fixed route detection better after leaving a route and back.
  • Fixed erroneous notification about bad GPS signal when starting navigation simulation (NavigationManager.startSimulation).

Release Date: January 26, 2022

  • All network request handling has been moved from libcurl to the system network client.
  • Added camera position logging if incorrect position value is passed to Camera.move, Camera.position and MapOptions.position methods.

Release Date: January 10, 2022

  • Fixed an issue where tiles would not load when AdGuard VPN was enabled.
  • Removed logging errors when map object crashes immediately after creation.
  • Fixed network cache crash.
  • Added request logging for network errors.
  • Fixed errors in logs when processing map tiles.
  • Fixed rare crashes during map creation in different threads.
  • Fixed errors in logs when adding marker to the map.

Release Date: December 29, 2021

  • Save and restore route and navigator state - PackedNavigationState, TrafficRoute.fromNavigationState.
  • Added property PublicTransportTransfer.startPointName - name of the start point of the route section.
  • Displaying numbers and colors of subway lines in the public transport card (PublicTransportCard).
  • Fixed crash when changing map zoom settings in navigator (NavigationManager.zoomFollowSettings).
  • Fixed PublicTransportInfo.color operation for transport types other than metro.
  • The period of traffic data update is limited by 30 seconds from the bottom.
  • The PublicTransportTransfer.waypointName property has been renamed to finishPointName.
  • Changes for finding public transportation fare.

    • In the Walking Line directory, added layers "Inactive Underground Walking Line" (two layers with the same name), "Inactive Walking Line", "Active Underground Walking Line" (two layers), "Active Walking Line", removed layers "Underground Walking Line" (two layers) and "Walking Line".
    • The Underground Walking Route Line, Inactive Underground Walking Route Line, Inactive Walking Route Line, Active Underground Walking Route Line, Active Walking Route Line layers were added, and the Underground Walking Route Line and Walking Route Line layers were deleted in the Maintained Walking Line catalog.
    • Renamed the Maneuver Arrows Shallow Scale in Maintain Mode layer to Maneuver Arrows Shallow Scale in Maintain Mode.
    • Added directory with layers "Route line on public transport".
  • The "Traffic", "Walking route line", "Walking route line in guided mode", and "Walking route line in auto" catalogs have been moved higher to keep the models and buildings from covering the routes. They are now above the 3D Model layer.

  • Arrow display has been corrected - for the Other Arrows, Highway Arrows layers, the object selection condition has been changed (select JSON to see the current condition and compare it to the condition in your styles).

  • For the layer "Yellow Line Subway Drop-off Stop in active state" leibeling has been disabled (in templates through adding new leibeling group, but it's easier to turn on the checkbox "Keep visible when overlaying on other objects").

  • The "Generalized Marker" layer has had the "search_marker_icon" group added to the image leibeling, so that it is not hidden by other objects.

  • Changed daytime and nighttime theme inconsistencies.

    • In the daytime theme:
      • Removed font at "Lookout," "Natural Monument," "Waterfall," "Park," and "Beach" layers.
      • Minzoom was changed from 18 to 17 for "Playground" and "Sports equipment" layers.
      • Layer "Garden", "Ski Center" minzoom changed from 12 to 14.
      • The "Streetcar Dotted" layer has been changed from 16.5 to 15.5 minzoom to correspond to the "Streetcar" layer.
      • The text display has been changed from 17 to 16 zoom on the "Speed Camera_100" layer.
    • In the night theme:
      • The "Rail/D Line" layer has had its maxzoom changed from 13.5 to 13 to match the "Rail/Dash Dot" layer.
      • The "Stairs" and "Zebra" layers have had their minzoom changed from 16.5 to 16.
      • All "Flat Houses" layers have been changed from 20 to 16 to avoid displaying them simultaneously with 3D houses.
      • The "Gardens" and "Schools" layers in the "Flat Houses" catalog have changed their minzoom from 15 to 14.
      • The "Parking Area" layer has changed its minzoom from 17.5 to 17.
      • Minzoom was changed from 4 to 3 for the "Large 2GIS Cities" layer.
      • Minzoom has been changed from 6 to 4 for the "Medium 2GIS Cities" layer.
      • Minor cities" layer has minzoom changed from 7 to 6.
      • For the "Large Countries" and "2GIS Countries" layers, maxzoom was changed from 8 to 6.
      • The zoom value in the interpolate line width of the "Maneuver Arrows fine scale in guide mode" layer was changed from 19 to 20.
      • The search_marker_icon and search_marker_text labeling groups were added, and these groups are specified in the "Search Marker" layer.
      • The "selection_marker" and "selection_marker_text" labeling groups are specified in the "selection search marker" layer.
    • Some theme inconsistencies occurred because of the use of a range from the data. To prevent this from happening in the future, all scales in templates are now specified explicitly.

Release Date: December 24, 2021

  • Added crosswalk and bike routes, as well as routes on public transportation.
  • Added ability to disable route completion and GPS signal loss instructions.
  • Two fields appeared in the Location structure - the name of the geopositioning source source and the time point at which the geoposition was defined, timestamp.
  • Class PackedMapState for serialization and deserialization of the map state. The old serialize(cameraPosition:) and deserialize(positionString:) methods are marked as deprecated.
  • Class PackedSearchQuery for serializing and deserializing a search query.
  • Added mapToScreen(geoPointWithElevation:) method to the Projection structure.
  • Implemented a control for displaying routes on public transport.
  • Added the sending of statistics for the navigator.
  • Corrected a bug when switching from FreeRoam mode to navigation mode to play a re-route instruction.
  • Fixed missing intermediate points when re-routing a route.
  • Added 30 seconds timer for sounding instructions on rerouting.
  • Fixed working with traffic events for anonymous users.
  • Removed the speed controller display for pedestrian and bicycle routes.
  • Fixed notification on bad GPS signal when starting navigation simulation.
  • Fixed the problem with black screen on initialization of the map before loading the background colors from the stylesheets. Added field MapOptions.backgroundColor for setting initial background color.
  • Fixed an issue where map tiles would not load when AdGuard VPN was enabled.
  • Optimized the display of traffic jams on the map.

Release Date: December 8, 2021

  • Fixed crashes related to the SIGABRT system signal.

Release Date: December 2, 2021

  • In the search result SearchResult field SearchResultType - information about result type was added.
  • In the SearchQueryBuilder it is now possible to set filtering via SearchQueryBuilder.setDirectoryFilter(directoryFilter:) and sorting via SearchQueryBuilder.setSortingType(sortingType:). Currently, filtering by open time (open now and open at specific time) and sorting by relevance, by rating and by distance from current user location are implemented.
  • In SearchQueryBuilder there is an option to set the current location of the user for the search query via SearchQueryBuilder.setLocation(locationPoint:).
  • The GeoPoint and GeoPointWithElevation classes have added methods bearing(point:), distance(point:) and move(bearing:, meter:).
  • Fixed the display of cameras on the route. Cameras that are closer to the start of the route are now always displayed at a higher priority than cameras that are further away.
  • Removed the notification that you need to provide permission to search for and connect to devices on the local network. This notification was appearing when first installing the application with our MobileSDK and then initializing the map.
  • Fixed a crash when running MyLocationController.
  • Fixed a bug where cameras in free roam mode would sometimes be displayed without a miscalculation 2 km ahead in the driving direction.
  • Changed signature of methods NavigationManager.start and NavigationManager.startSimulation. They now take RouteBuildOptions together with the route.
  • The method Geometry.hasIntersection is renamed to Geometry.intersects.
  • The ParkingPurpose state has been removed. Instead the ParkingInfo.forTruck flag was added.
  • The function toMapGeometry(route: TrafficRoute) was replaced by the function toMapGeometry(geometry: GeoPointRouteAttribute).
  • Removed the BetterRouteInfo.duration field. Added BetterRouteInfo.trafficRoute and BetterRouteInfo.startPoint instead.
  • Added classes Route and Traffic. The TrafficRoute now has only route and traffic properties instead of the previous set of properties, through which you can get full information about the route.
  • Removed BicycleRouteSearchOptions and PedestrianRouteSearchOptions - carried over for future releases.
  • Renamed RouteParams to RouteEditorRouteParams.

Migration from v1.x.

  • Instead of Arcdegree, which was used to set camera rotation, latitude, longitude, now separate types - Bearing, Latitude, Longitude.
  • Changed API for working with traffic jams: Renamed TrafficScore into TrafficScoreProvider, TrafficScoreValue into TrafficScore, removed TrafficManager - TrafficScoreProvider is created via constructor.
  • Fixed a crash when GLContext was not created when creating a map. Now in case of an error, an exception GLContextError appears. Need to be able to handle it.
  • Renamed the LocaleManager.setOverridedLocales method to overrideLocales.
  • Removed getting the positioning queue via IPositioningServicesFactory.positioningQueue. Now inside the ILocationProvider protocol implementation there is no need to callback through the queue.
  • Fixes and changes to custom camera controllers API - now there can be only one controller, added/removed by Camera.setCustomFollowController / Camera.removeCustomFollowController methods.
  • In the styles editor on the tab Dynamic objects object's Radius of geo-positioning accuracyshould use sub-layers_dvg_accuracy_circle` (if there are 2 more - it's ok, they were left for compatibility with the first version).
  • The layers Speed camera in directories Transport events layer, Transport events layer, `Transport events en route en route en route en route en route en route en route en route en route en route en route en route en route en route en route en route en route en route en route en route en scale changed to 13-14.
  • Added layer Parking area auto-generated for parking mode.
  • Removed layer Parkings.
  • Added layers Parking spaces with unknown price, Parking spaces for disabled people, Resident parking spaces, Taxi parking spaces, Parking spaces for free.
  • There are new layers in the catalogs Transport events on route in maintenance mode and Transport events on route. Add them to your styles to continue to display cameras on the route, and there are new events.
  • Added catalogs with layers Transport events layer in guidance mode' and Transport events layer' for the new traffic events layer.
  • A catalog of layers Parking bubbles was added, as well as layers Parking no-go zone for parking enabled layer and Parking area for parking mode. These data are displayed only when the map has the attribute parkingOn set to true.
  • The Parking Area layer is now displayed when the parkingOn attribute of the map is absent or set to false.

Release Date: November 25, 2021

  • Removed the notification about granting permission to search for and connect to devices on the local network. This notification would appear when first installing the app with our MobileSDK and then initializing the map.
  • Now creating a map with size 0x0 is valid.
  • Fixed a crash when running MyLocationController.

Release Date: November 22, 2021

  • Added collecting and sending traffic jam data while navigating. Enabled by default, can be turned off with TrafficCollector.trafficCollectingAllowed.
  • Parking data in the directory - DirectoryObject.parkingInfo.
  • Data about reviews in the directory - DirectoryObject.reviews.
  • Data about the work status in the directory - DirectoryObject.workStatus.
  • Events in the statistics about creating and deleting map sources.
  • Updated libcurl library. Moved to asynchronous DNS name resolution.
  • Traffic events display in navigator.
  • Removed navigation start delay.
  • Incorrect value of Model.state when switching from free-roam to route mode.
  • Incorrect macroGraph update status - RoadMacroGraph.info.updateStatus.
  • Behavior in case of changing map size during flight.
  • Behavior of Camera.padding when map size is small.
  • Now creating a map with size 0x0 is valid.
  • The LocaleManager.setOverridedLocales method has been renamed to overrideLocales.
  • Requires styles to be reloaded from the editor. Fixes the display of railroads, and also fixes a crash in one of the scenarios.

Release Date: November 19, 2021

  • Updated libcurl library. Moved to asynchronous DNS name resolution.
  • Fixed crash in loading map tiles.
  • Circle(Circle) was flickering when moving.
  • Requires styles to be reloaded from the editor. Fixes the display of railroads, and also fixes a crash in one of the scenarios.

Release Date: November 10, 2021

  • Added captions to road event markers.
  • Add road event card (CreateRoadEventView).
  • Displaying a photo in the road event card.
  • Button for deleting a road event in the card.
  • Possibility to turn on/off the sounding of instructions, obstacles and road subtype - SoundCategory.instructions, SoundCategory.obstacles, SoundCategory.roadSubtypes.
  • Send statistics about parameters of used maps - size, DPI, etc.
  • Didn't voice road events that didn't have a lane specified.
  • Not allowing the map to be zoomed by double tapping when zooming is disabled in settings.
  • The circle(Circle) was flickering while moving.
  • Removed the voiceover of speed bumps (it did not work before either - no such sounds, there was a blank instead).

Release Date: October 29, 2021

  • Getting photos of road events - RoadEvent.photos.
  • Ability to create road events - RoadEventManager with methods createAccident, createCamera etc.
  • Ability to delete a traffic event - RoadEvent.remover method.
  • Ability to perform actions with traffic events (confirm, deny, like, etc.) - RoadEvent.availableActions.
  • Improved description of road events-cameras.
  • Corrected the display of icons of two-sided overlaps - previously it was displayed only on one side.
  • Ability to set map size for camera position calculation functions - parameter size for calcPosition and zoomOutToFit.
  • Route settings RouteMapObjectSource.routeSourceSettings, NavigationManager.routeSourceSettings, with which you can set parameters for displaying maneuver arrows.
  • Alouding of re-building the route in the navigator.
  • Fixed the sounding of the grouped cameras; only the first priority one will be sounded.
  • Indicator of loading on route realignment in Navigator UI.
  • Fixed error in sending statistics when there were few events MapSource with type 2gis.online.
  • Fixed potential crashes in processing network requests.
  • Detailed logging of network request information at LogLevel.verbose level.
  • Corrected the display of the 2GIS logo so that Xcode does not generate warnings.
  • Fixed a crash in IBatteryInfoProvider.
  • Fixed a crash where the GLContext was not created when the map was created. The GLContextError exception now appears in case of an error.

Release Date: October 29, 2021

  • Potential crashes in network request handling fixed.

Release Date: October 26, 2021

  • New devices PPI screen definition.
  • Fixed 2GIS logo size on the map.
  • Fixed a bug when sending statistics, in which there were few MapSource events with type 2gis.online.
  • Fixed a crash when MyLocationController was running.
  • Fixed a crash when GLContext was not created when creating the map. Now just write errors to the log.
  • Fixed the display of the 2GIS logo so that Xcode will not generate warnings.
  • Fixed crash in the IBatteryInfoProvider.

Release Date: October 21, 2021

  • Fixed incorrect behavior of the close road event card button.
  • Fixed an issue where artifacts would appear when hiding the lane control in FreeRoam mode.
  • Navigator controls are now hidden when reaching the finish point of the route.
  • Fixed bug when downloading territories.
  • Added processing of click on the road event on the route.
  • Supported rendering cameras in FreeRoam mode when using the offline road graph source.
  • Fixed a bug where cameras were not displayed when you first build a route.
  • Fixed crash when MyLocationController is running.
  • Fixed errors in the display of traffic events.
  • Fixed a bug where intersection control camera icons were not displayed.
  • Added ability to disable voice by type via NavigationManager.soundNotificationSettings.enabledSoundCategories.
  • Removed getting the positioning queue via IPositioningServicesFactory.positioningQueueue. Now inside the ILocationProvider protocol implementation, there is no need to callback through the queue.

Release Date: October 14, 2021

  • Corrections to the RoadEventSource traffic event source.
  • Fixed suggestions for some queries.
  • Added display of road events on the route.
  • Added IRoadEventCardView to display event card.
  • All navigator controls become inactive while displaying notifications.
  • Named exits, exit numbers for the current maneuver, next maneuver if it is closer than 50 meters to the main maneuver are now displayed.
  • Ability to set the color of navigator controls through NavigationViewOptions.theme.
  • Route retrieval in navigator, if previous attempt was unsuccessful.
  • Capability to get from the navigator's model the current geo-position with which the navigator is working - Model.location.
  • Correction in voicing of cameras in navigator - now distance to camera is reported, not to the beginning of its action.
  • Additional description of road type - RouteInfo.roadSubtypes.
  • Added default values for route search parameters in TruckRouteSearchOptions.
  • Fixes and changes to custom camera controllers API - now there can be only one controller, added/removed by Camera.setCustomFollowController / Camera.removeCustomFollowController methods.
  • Model.routeInfo renamed to Model.route, Model.currentRoutePosition to Model.routePosition, instead of Model.badLocation now the opposite Model.locationAvailable, instead of Model.currentSpeedChannel now Model.locationChannel.groundSpeed.
  • The "Speed Camera" layers have changed the display scale to 13-14 in the "Transport Events Layer in Maintain Mode", "Transport Events Layer", "Transport Events on Route in Maintain Mode", and "Transport Events on Route" catalogs.
  • The "Parking area" and "Parking area for parking mode" layers have been given a color for the selected state.
  • Auto generated parking area for parking mode" layer was added.
  • The layers in the "Parking Bubbles" catalog have the icon priority raised to 1, so that they displace the regular parking icons.
  • Removed the "Parking Bubbles" layer.
  • Added layers "Parking lots with unknown price", "Handicapped parking lots", "Resident parking lots", "Taxi parking lots", and "Free parking lots".

Release Date: October 7, 2021

  • Displaying of the traffic events on the map (not tied to a specific route) - RoadEventSource, RoadEvent.
  • Possibility to set a custom camera tracking controller - CustomFollowController.
  • Fixed regression: dragging markers without text did not work.
  • Displayed the beginning and end of toll roads on the map.
  • Support for inter-regional offline fare search.
  • Support for cabs as a separate type of transport - TaxiRouteSearchOptions.
  • Support of passes for trucks - TruckRouteSearchOptions.passId, TrafficRoute.truckPassZoneIds.
  • Fixed extra maneuver sounding in navigator.
  • Voice announcement of crashes and roadworks in navigator.
  • Voice announcement about via points in navigator.
  • Correction in the navigator when navigator has zero speed.
  • Displaying of the next maneuver and exit number in the navigator's UI.
  • Navigator UI localized in Russian and English.
  • Changes affecting backward compatibility in navigator's API Information about the route - RoadTypeInfo , TransportTypeInfo , RoadSurfaceInfo , SpeedLimitInfo , RoadNameInfo , TollInfo - is now located in RouteInfo in the form of lists, the current value can be obtained from them, referring to the appropriate index in Model - Model.roadTypeIndex, Model.transportTypeIndex , etc.
  • Definition of PPI screen of new devices.
  • Changes in map styles:
    • Change affecting backward compatibility There are new layers in the "Transport Events on Route in Maintain Mode" and "Transport Events on Route" directories. Add them to your styles to continue to display cameras on the route, and new events have appeared.
    • Added catalogs with layers "Transport Events Layer in Maintain Mode" and "Transport Events Layer" for the new traffic events layer.
    • Added "Parking Bubbles" layer catalog, as well as "No Parking Zone for Enabled Parking Layer" and "Parking Area for Parking Mode" layers. These data are displayed only when the map has the parkingOn attribute set to true.
    • The "Parking area" layer. is now displayed when the map has no parkingOn attribute or is set to false.

Release Date: September 28, 2021

  • Fixed race in RouteMapObject, which could cause it to display incorrectly.
  • Added mapping and voicing of new camera types on the map.
  • Added property Camera.size - view area size in pixels.
  • Changes in navigator's API:
    • The Model.maneuverInstructionIndex property has been renamed to instructionIndex.
    • For information on navigator instructions, RouteInfo.instructions is used, the maneuver name from which can be obtained using getInstructionManeuver function.
  • Fixed tracking of geoposition when using navigator with several maps at the same time.
  • Removed unnecessary transition of Model into State.DISABLED state when re-searching a route.

Release Date: September 23, 2021

  • Fixed problems that occurred after refinement of moving markers without text - static markers without text worked slowly and transparency was not set for markers without text.
  • Updated the size of the 2GIS logo on the map.
  • Fixed an issue where when setting the slope angle when creating a map, the slope angle was reset whenever the map was changed.

Release Date: September 23, 2021

  • Fixed issues that occurred after updating marker movement without text - static markers without text worked slowly and the transparency was not set for markers without text.
  • Updated the size of the 2GIS logo on the map.
  • Fixed the issue when setting the tilt angle when creating a map, the tilt angle was reset on any map changes.

Release Date: September 21, 2021

  • Significantly accelerated the movement of markers without text.
    Important: it is necessary to re-export the style from the style editor, otherwise the markers will not be displayed.
  • Changed the logic of clustering - the cluster center is now the center of mass of the sub-clusters of the previous level.
  • Fixed an error where in the clustering mode, when removing a marker, nearby closely located markers were also deleted.
  • Fixed the functionality of SuggestQueryBuilder.setSuggestorType - previously this option did not affect the result.

Release Date: September 21, 2021

  • Significantly accelerated the movement of markers without text.
    Important: it is necessary to re-export the style from the style editor, without it the markers will not be displayed.
  • Changed clustering logic - the center of masses of subclusters of previous level is taken as the center of cluster.
  • Fixed a bug when in the clustering mode, when deleting a marker, adjacent nearby markers were deleted.
  • Fixed SuggestQueryBuilder.setSuggestorType - previously this option did not affect the result.
  • Added properties TrafficRoute.startPoint, TrafficRoute.finishPoint - start and end points of the route.
  • Added zoom control settings for navigator - NavigationManager.zoomFollowSettings.
  • Added settings of traffic data update in the navigator - NavigationManager.trafficSettings.
  • Added AudioOptions and IAudioSettings for sound settings. It is possible to adjust the muting of sounds of third-party applications in the navigator and the volume level during playback.
  • The tracking control in the navigator is NavigatorFollowingControl.
  • The BetterRouteControlView goes to the minimized state when there is no interaction with it.

Migration from v1.x.

  • Instead of Arcdegree, which was used to set camera rotation, latitude, longitude, now separate types - Bearing, Latitude, Longitude.
  • Changed API for working with traffic jams: Renamed TrafficScore in TrafficScoreProvider, TrafficScoreValue in TrafficScore, TrafficManager was removed - TrafficScoreProvider is created through the constructor.
  • Changed the basic styles. In the styles editor on the tab Dynamic Objects objects geopositioning accuracy radius should use sublayer s_dvg_accuracy_circle (if there are 2 more - it's okay, they were left for compatibility with the first version).

Release Date: September 6, 2021

  • Fixed problem with freeing memory after deleting MapView.
  • Fixed a problem with changing marker icons via Marker.icon, which would render a blank icon before a new loaded image would appear. Now before the new image is loaded the old one is displayed.
  • Improved drawing of overlaps on the road over traffic jams.
  • Implemented the traffic control TrafficControl for the rendering of traffic jams on the map and the display of the traffic jam score. You can get the control object using IMapControlFactory.makeTrafficControl.
  • Fixed Mobile SDK crash on iOS 15 beta when the app was in minimized state.

Release Date: September 3, 2021

  • Navigator will change map zoom level automatically depending on speed (no setting yet).
  • Fixed display of traffic jams on map at maximum zoom levels.
  • Fixed a problem with changing marker icons via the Marker.icon, which caused a blank icon to be displayed before a new loaded image. Now, before the new image is loaded, the old one is displayed.
  • Reworked the calculation of the camera coverage on the route.
  • Fixed a bug where the position tracking is not enabled immediately when starting navigation.
  • Supported different modes of navigator in base UI, such as RouteSearch, Finished, Disabled.
  • Improved drawing of overlaps on the road over traffic jams.
  • Implemented TrafficControl control to enable the display of traffic jams on the map and the display of the traffic jam score. You can get the controller object using IMapControlFactory.makeTrafficControl.
  • Change affecting backward compatibility. The RouteSearchOptions class has been replaced by a variant which can contain one of the specific classes - CarRouteSearchOptions, PedestrianRouteSearchOptions, BicycleRouteSearchOptions, PublicTransportRouteSearchOptions or TruckRouteSearchOptions.
  • Change affecting backward compatibility. The enum RoutingType has been removed. It should use RouteSearchOptions instead.
  • Change affecting backward compatibility. The NavigationManager.uiModel class has had its distanceCountersChannel removed. Instead it should now use currentRoutePositionChannel to calculate the remaining distance to the nearest maneuver or to the end of the route. The classes DistanceCounters and HumpPoint have been removed. Added class IntermediatePoint describing an intermediate point on the route. Information about the current position on the route is contained in a new class RoutePosition.
  • Change affecting backward compatibility. Removed class TrafficManager. Class TrafficScore is renamed into TrafficScoreProvider and becomes the main class for working with traffic jams. The class TrafficScoreValue is renamed to TrafficScore.
  • Change affecting backward compatibility. The basic styles have changed. In the styles editor on the tab Dynamic objects objects Radius of geopositioning accuracymust uses_dvg_accuracy_circle` sublayer (if there are 2 more - it's ok, they were left for compatibility with the first version).

Release Date: August 26, 2021

  • Fixed an issue where MapObjectManager.removeObject would not work if attributes of the object being removed were changed in parallel.
  • Improved the clustering generated through MapObjectManager.withClustering. Now when deleting markers from MapObjectManager, the cluster position is corrected if the cluster-forming marker was deleted.
  • The CameraPositionPoint is now taken into account when calculating the CameraPosition with the calcPosition function.
  • Change affecting backward compatibility. The display of the current location marker has been improved - now the icon with the direction can always be drawn, regardless of the navigation mode. If you use custom styles, in the style editor you need to correct the dynamic objects of the current location as follows:
    1. At Marker on auto and Marker on auto, outdated position in the item Visibility toggle switch Navigator mode and select the item On.
    2. At Marker with direction, Marker without direction and Marker without direction, obsolete position in the item Visibility put the toggle switch Navigator mode and select the item Off.
  • Fixed freezing in TrafficSource.
  • Fixes in attraction to route in Free Roam mode.

Release Date: August 24, 2021

  • Fixed an issue where MapObjectManager.removeObject would not work if attributes of the object being removed were changed in parallel.
  • Improved the clustering generated through MapObjectManager.withClustering. Now when deleting markers from MapObjectManager, the cluster position is corrected if the cluster-forming marker was deleted.
  • The CameraPositionPoint is now taken into account when calculating the CameraPosition with the calcPosition function.
  • Change affecting backward compatibility. The display of the current location marker has been improved - now the icon with the direction can always be drawn, regardless of the navigation mode. If you use custom styles, in the style editor you need to correct the dynamic objects of the current location as follows:
    1. At Marker on auto and Marker on auto, outdated position in the item Visibility toggle switch Navigator mode and select the item On.
    2. At Directional marker, Directionless marker and Directional marker, obsolete position in the item Visibility set the switch Navigator mode and select the item Off.

Release Date: August 13, 2021

  • Added the ability to customize the pedestrian voice of the route when navigating.
  • Added navigationManager.uiModel channel navigationActiveChannel, which returns two states - active and inactive. The second state is set when the user has finished driving the car and the navigator can be turned off.
  • Fixed crash when changing marker position and re-initializing MapObjectManager in parallel.
  • Fixed a bug where clustering would stop working for small zoom levels (0 or 1).
  • Fixed incorrect behavior when clicking into a cluster when displaying clustering.
  • Added support for `Map.interactive' for map and copywriting gestures.
  • Fixed a bug where a memory leak appeared if the map became invisible, but the application code kept working with it (changing current objects on the map, adding new ones, etc.).

Release Date: August 12, 2021

  • Fixed crash when changing marker position and re-initializing MapObjectManager in parallel.
  • Fixed a bug where clustering would stop working for small zoom levels (0 or 1).
  • Fixed incorrect behavior when clicking into a cluster when displaying clustering.
  • Added support for `Map.interactive' for map and copywriting gestures.
  • Fixed bug, which caused memory leak if map became invisible, but application code kept working with it (changing current objects on the map, adding new ones, etc.).

Release Date: August 6, 2021

  • Fixed an issue in the navigator where navigation mode would have long refreshes, and the position marker would have an incorrect direction and shift to a random position.
  • The MapObjectManager method clusteringObjects(withameraPosition:) appeared to get clustering objects for a given camera position. The method returns both SimpleClusterObject clusters and Marker markers.
  • Using the SimpleClusterObject object, you can now change the cluster attributes in the same way as the attributes of the Marker markers, except for the cluster position.
  • Fixed a bug where IMapView would not work if the IMapFactory that created it was destroyed. Now there is no need to always store the IMapFactory object.
  • Fixed an issue where it was impossible to select a route at maximum zoom levels.
  • Removed freezing of tracking the current position when changing the animation duration in the navigator.

Release Date: August 5, 2021

  • The MapObjectManager method clusteringObjects(cameraPosition:) appeared to get clustering objects for a given camera position. The method returns both SimpleClusterObject clusters and Marker markers.
  • Using the SimpleClusterObject object, you can now change the cluster attributes in the same way as the attributes of the Marker markers, except for the cluster position.
  • Fixed a bug where IMapView would not work if the IMapFactory that created it was destroyed. Now there is no need to always keep the IMapFactory object.

Release Date: July 28, 2021

  • In the RouteMapObject class, the calloutPositionChannel with the position of the babble over the route has been added.
  • In the structure Camera, which returns NavigationManager, added a field range - information about the range of the camera.
  • The voice of the navigator depending on the type of route - pedestrian/bicycle/vehicle - has been divided.

Release Date: July 28, 2021

  • Fixed a bug with MapObjectManager adding a marker to the map before the image is fully loaded.

  • Added new protocol IEnergyConsumption to set max fps in normal and power saving mode.

  • Fixed a bug where the map would not update when removing markers during clustering via `MapObjectManager'.

  • Fixed an issue where my location marker would rotate in the opposite direction.

  • Partially fixed memory leak problem with frequent geometry updates at map objects (e.g. changing points at a polyline every 10ms). Full fix will be in next releases.

  • Updated common styles:

    1. Moved to editor:

      A. Maneuver Arrows (Route Line on Auto => 4 layers `Maneuver Arrows*').

      B. Start point, end point, intermediate point of the route, and connection point of different parts of the routes (layers Point B, Point A, Connection points, Intermediate points in the Dynamic objects directory).

      C. Search markers (layers Search marker selection', Search marker', Generalized marker' in the Dynamic objects' catalog).

      D. Objects on the route (layers in the directories TUGC on the route in guidance mode and TUGC on the route).

      E. Pedestrian parts of routes (layers in the directories TUGC route line in guided mode' and TUGC route line').

      F. Geo-position marker for pedestrian mode (layers Marker with direction, Marker without direction, Old marker without direction in the Dynamic objects catalog).

      Now these objects are customized from the editor and don't appear unconditionally on top of everything. The layers must be copied to their styles and placed in a similar order, so that all objects will display correctly with the new version of the SDK. To copy a layer, you can select the layers you want, press Ctrl+C/Cmd+C and open in the same window another style.

    2. The `Marker Footer' layer has been removed. It should also be removed in its own styles.

    3. Changed layers for displaying entrances (layers Elevations above houses and Elevations below houses). Now the data are not set via JSON, and selected the correct layers in the tab Data. Also in the night theme, the font has been removed for the entrances under the houses, so that they are displayed without signatures. Need to make similar changes in their own styles.

    4. Added layers Signatures of mountain ranges and Signatures of platforms to the directory Signatures of geo objects in the night theme and layer Graffiti in the directory Sightseeing sights.

    5. Added layers Christmas bazaar, Police, Shower stall, Tanzpol to the daytime theme in the `Sightseeing' catalog.

    6. Changed the layers in the directory Roads, requires them to update their own styles.

Release Date: July 23, 2021

  • Fixed a problem with guidance on a long route: the update of the geoposition marker and the whole map was not smoothly, but jerks.

  • Fixed an issue with MapObjectManager adding marker to the map before the image is fully loaded.

  • Added new protocol IEnergyConsumption to set max fps in normal and power saving mode.

  • Fixed a bug where the map would not update when removing markers during clustering via MapObjectManager.

  • Fixed a bug where my location marker would rotate in the opposite direction.

  • Updated common styles:

    1. Moved to the editor:

      A. Maneuver Arrows (Route Line on Auto => 4 layers `Maneuver Arrows*').

      B. Start point, end point, intermediate point of the route, and connection point of different parts of the routes (layers Point B, Point A, Connection points, Intermediate points in the Dynamic objects directory).

      C. Search markers (layers Search marker selection', Search marker', Generalized marker' in the Dynamic objects' catalog).

      D. Objects on the route (layers in the directories TUGC on the route in guidance mode and TUGC on the route).

      E. Pedestrian parts of routes (layers in the directories TUGC route line in guided mode' and TUGC route line').

      F. Geo-position marker for pedestrian mode (layers Marker with direction, Marker without direction, Old marker without direction in the Dynamic objects catalog).

      Now these objects are customized from the editor and don't appear unconditionally on top of everything. The layers must be copied to their styles and placed in a similar order, so that all objects will display correctly with the new version of the SDK. To copy a layer, you can select the layers you want, press Ctrl+C/Cmd+C and open in the same window another style.

    2. The Walker Marker layer has been deleted. It also needs to be removed in its own styles.

    3. Changed layers for displaying entrances (layers Entrances above houses and Entrances below houses). Now the data are not set via JSON, but the correct layers are selected in the tab Data. Also in the night theme, the font has been removed for the entrances under the houses, so that they are displayed without signatures. Need to make similar changes in their own styles.

    4. Added layers Signatures of mountain ranges and Signatures of platforms to the directory Signatures of geo objects in the night theme and layer Graffiti in the directory Sightseeing sights.

    5. Added layers Christmas bazaar, Police, Shower stall, Tanzpol to the daytime theme in the `Sightseeing' catalog.

    6. Changed the layers in the directory Roads, requires them to update their own styles.

Release Date: July 13, 2021

  • Added support for pedestrian routes with type RoutingType.Pedestrian. The RouteInfo class has an array with a description of all obstacles on a pedestrian route RouteInfo.pedestrianObstacles.
  • Added support for routes on public transport with type RoutingType.Public.
  • Implemented an interface TerritoryManager for downloading offline territories.
  • Added NavigationVoice and VoiceSelector to select the voice and voice of the navigator.
  • Implemented VoiceManager for interaction with the list of the navigator's voice packages.
  • Implemented the basic functionality of managing floor plans through Map.indoorManager.
  • Added ability to get and set zIndex for SimpleMapObject objects.
  • Added ability to specify which parts of the route are displayed on the map through RouteMapObject.displayFlags.
  • The getLanesControlImages function is now available to get a list of lane icons supplied with the SDK.
  • Updated the copyright logo on the map.
  • Updated location marker in navigator when going off route.
  • Change affecting backward compatibility. In class RouteInfo for route description now added whole TrafficRoute instead of route length.

Release Date: July 8, 2021

🎉 First public release!🎉

  • Change affecting backward compatibility. Changed package names - PlatformSDK and PlatformMapSDK renamed to DGis regardless of build type.

  • Reduced size of Map-version of SDK - removed work with offline directory and map data source.

    For Map-version only makeOnlineManager method for creating online gazetteer remained in ISearchManagerFactory and makeOfflineManager and makeSmartManager are now available only in Full-version.

    For the Map-version, the createOfflineDGISSource method for creating offline map data source is removed in ISourceFactory.

  • In MapObjectManager you can now enable clustering mode for Marker objects.

    To initialize clustering, you need to create a MapObjectManager object using MapObjectManager.withClustering(map:logicalPixel:maxZoom:clusterRenderer:).

    The fourth parameter is a custom implementation of the ISimpleClusterRenderer protocol to customize the rendering of clusters on the map. The customization itself is based on the SimpleClusterOptions object which is returned by calling the ISimpleClusterRenderer.renderCluster function.

  • With TextStyle.textPlacement and TextStyle.textOffset it is now possible to set the position of the caption relative to the marker.

  • Added ability to set camera tilt angle depending on scale - ZoomToTiltRelation, Camera.zoomToTiltRelation.

  • In LogOptions it became possible to set a custom logging handler. To do this, you need to implement the ILogSink protocol and pass an object to LogOptions.customSink.

  • Logging change: The toMapGeometry(trafficRoute:currentRoutePoint:) function has been renamed to remainingRouteGeometry(trafficRoute:currentRoutePoint:) to get the geometry of the rest of the route.

  • Optimized handling of network connections.

Release Date: June 7, 2021

  • Map default stylesheet updated - corrected size of lettering and icons.

Release Date: June 2, 2021

  • When creating map objects it is now possible to set their rendering order with MarkerOptions.zIndex, PolygonOptions.zIndex etc. The index value affects the priority of the object when the elements are overlaid on the map.

  • Simplifying the creation of simple data types: Arcdegree, Color, Elevation, GeoPoint, GeoPointWithElevation, LogicalPixel, Meter, Tilt and Zoom.

    For example, previously when creating an object of type GeoPoint it was necessary to construct objects of type Arcdegree.

    let geoPoint = GeoPoint(latitude: Arcdegree(value: 54.0), longitude: Arcdegree(value: 32.0))

    Initialization of GeoPoint is now available from a pair of CLLocationDegrees values.

    let geoPoint = GeoPoint(latitude: 54.0, longitude: 32.0).

  • Added the ability to set a list of locales bypassing the system settings with LocaleManager.setOverridedLocales. To return to system locales, an empty list must be passed to the LocaleManager.setOverridedLocales method.

  • Added function toMapGeometry(trafficRoute:currentRoutePoint:) to get the geometry of the rest of the route.

  • Fixed the map display when the z-level is zero.

  • Added ability to disable animation when objects appear or disappear on the map via MarkerOptions.animatedAppearance and Marker.setAnimatedAppearance.

  • Supported setting of correct DPI when creating a map. Now, besides DPI setting via MapOptions.devicePPI it is possible to set MapOptions.deviceDensity - a multiplier equal to the number of physical pixels of device in one logical point of screen coordinate system. Because deviceDensity was not set, objects on the map at different z-levels had incorrect sizes.

    For example, for a given screen (UIScreen) this multiplier is equal to the value of nativeScale. By default, the nativeScale of the main screen is taken.

  • Change affecting backward compatibility. Removed the obsolete MarkerBuilder class for creating map objects. Instead, use class MapObjectManager to add objects; constructors Marker, Polygon etc. to create them.

Release Date: May 25, 2021

  • Added the ability to check for the intersection of geometries - Geometry.hasIntersection.

  • Added autoUseFirstResult attribute to SearchResult, which indicates that the first element in the search result is the most suitable for the flight or building a route to it.

  • Fixed a bug in the network caching mechanism, leading to slow writing of network responses to the device file system.

  • Change affecting backward compatibility. Changed the `MapObjectManager' interface.

    Map objects are now created through the constructors Marker, Polygon etc. instead of MapObjectManager.addMarker or MapObjectManager.addPolygon.

    To add or remove map objects, you must now use the MapObjectManager.addObjects/addObjects/removeObjects etc. methods. When adding multiple objects, it is most effective to use MapObjectManager.addObjects.

  • Change affecting backward compatibility. Changed the order of the parameters of the calcPosition and zoomOutToFit functions.

  • Change affecting backward compatibility. The data collection service setting DataCollectStatus has been renamed to PersonalDataCollectionConsent.

  • Change affecting backward compatibility. In the Container constructor, the dataCollectStatus parameter has also been renamed to personalDataCollectionConsent.

Release Date: May 5, 2021

  • Fixed a bug when adding a marker to the map through the MapObjectManager.

    By default, the marker was pointing north. This was causing its rotation angle to depend on the rotation angle of the map.

    Now the marker is pointing toward the top of the device screen regardless of map rotation.

  • Change affecting backward compatibility. The original marker rotation (MarkerOptions.iconMapDirection) and the existing marker rotation (Marker.iconMapDirection) now have a null type of MapDirection.

    A null value means that the marker will point to the top of the device screen regardless of the map rotation.

Release Date: April 30, 2021

  • Added possibility to set marker rotation. Initial rotation - MarkerOptions.iconMapDirection; rotation of existing marker - Marker.iconMapDirection.
  • The copyright on the map does not show the SDK version by default. To enable, you must set MapView.showsAPIVersion to true.
  • Added ability to get camera locations and directions in navigator: Camera.geoPoint, Camera.bearing.
  • Added ability to set location point (positionPoint) in calcPosition and zoomOutToFit functions.
  • Change affecting backward compatibility. Many object creation functions have been replaced by initializers of the appropriate type. For example: createMapObjectManagerMapObjectManager.init; Geometry.createPointPointGeometry.init, etc.

Release Date: April 24, 2021

  • Fixed parameters when collecting statistics.

Release Date: April 23, 2021

  • Fixed the map display on different scales.
  • Fixed the mechanism of statistics gathering.
  • Fixed an issue with markers displacing each other at different scales.
  • Set the minimum value of the zoom level to 2.

Release Date: April 22, 2021

  • Fixed potential crash when passing MapOptions with non-zero styleFuture In Container.makeMapFactory(options:).

  • Fixed a potential crash when destroying map objects (IMapFactory).

  • Fixed a single object leak when completely destroying the SDK container.

  • Improved handling of CLLocation objects in ILocationProvider protocol implementations.

    Previously, if a location contained both valid and invalid components (e.g., there were geo-coordinates but no velocity), the object was ignored as a whole. This was accompanied by the Platform sent an invalid location message in the log.

    Now in this case the correct components are taken into account. The message is written when, when a completely invalid location is sent to the SDK.

  • Added auto-detection of map PPI based on head unit model. See DevicePpi.autodetected. Default map settings (MapOptions.default) use this PPI; in case of unsupported device is set to DevicePpi.defaultForFailedAutodetection.

  • The DevicePpi type now implements the ExpressibleByFloatLiteral protocol.

  • Added ability to set map theme and enable auto-switching theme on iOS 13.

    The new Theme type corresponds to a theme within a style. The new MapAppearance type specifies set of themes and how to apply them: .universal for a fixed theme; .automatic for auto-switching between light and dark theme on iOS 13.

    The theme setting can be set in MapOptions.appearance when creating map by calling Container.makeMapFactory(options:). Subsequent switching is available by setting the IMapView.appearance property.

  • Change affecting backward compatibility. Type MapOptions.devicePpi changed from CGFloat? to DevicePpi? in order to improve documentation.

  • Added collection of anonymous usage statistics. Enabled by default. See the dataCollectionOptions parameter of Container.init. It's recommended to disable only in case of explicit user choice (e.g., GDPR waiver).

Release Date: April 15, 2021

  • Manage and retrieve information about HTTP cache - HttpCacheManager.
  • The non-static properties of most structures are made modifiable (i.e. letvar).
  • Information about route lanes - RouteInfo.laneSigns.
  • Removed thin black border at map objects when it is not set.
  • The ScreenPoint, ScreenSize, ScreenShift types implement Equatable and Hashable.
  • Added constructors ScreenPoint(_: CGPoint), ScreenSize(_: CGSize), ScreenShift(_: CGVector).
  • Change affecting backward compatibility TextStyle.fontSize, TextStyle.strokeWidth are of type LogicalPixel, not Float.
  • Change affecting backward compatibility In the navigator model: instead of Model.laneSign now Model.laneSignIndex. LaneSign can be obtained by this index from RouteInfo.laneSigns.
  • Change affecting backward compatibility A method for creating a custom gesture processing layer takes fewer parameters: IMapGestureViewFactory.makeGestureView(map:coordinateSpace:). Removed the eventProcessor parameter: the Map.processEvent method should be used instead.

Release Date: April 7, 2021

  • Added a tool to get the last rendered map frame as an image - IMapFactory.snapshotter.makeImage().
  • removeSource no longer throws an exception. Even if the source has not been added to the map.
  • Added a polyline with a gradient.
  • Creation of a custom gesture recognition layer is now possible during map initialization, see gestureViewFactory by MapOptions.
  • Change affecting backward compatibility have changed the type device associated with the map. The map must now be created by calling Container.makeMapFactory(options:) -> IMapFactory. The map controller map, map view mapView and other things are available from it.
  • Change affecting backward compatibility updated the GeoRect class.
  • Change affecting backward compatibility we've changed the format for dealing with subscriptions to property changes. Previously fields like Map.camera.position were of type StatefulChannel. Before, we used to get notifications of property value changes through camera.position.sink(receiveValue:), and the current value through camera.position.value. Such an API caused difficulties and was less efficient, so in the new version, for example, camera.position is just a property of type CameraPosition; and camera.positionChannel is StatefulChannel<CameraPosition>. This change is in effect for all properties previously of type StatefulChannel.

Release Date: March 24, 2021

Release Date: March 17, 2021

  • Added cache for tiles on the map. Configurable cache size will appear in next release.
  • Padding on the map.
  • Added ability to change current geometry for Polygon/Polyline objects.
  • Added a source for raster tiles (see [createRasterTileData]). createRasterTileDataSource.
  • Supported the theme attribute for map stylesheets unloaded from the editor.