Release notes
14.1.0 (2026-09-25)
🌟 Features and improvements
-
ISourceFactory.createReliefSource() and DgisSource.createReliefDgisSource() - methods for creating a 3D relief source from 2GIS data. The relief is automatically enabled when the source is added to the map
The source works only in regions where relief data from 2GIS is supported. See the list of regions in the 3D relief data source section.
-
In IDirectoryViewsFactory, added a variant for creating DirectorySearchView with a separate callback
onObjectSuggestTapfor handling a tap on an object suggestion. -
PackageInfo.description - localized detailed description of the data package, including voice packages and territory packages.
🛠 Bug fixes
- Fixed the operation of the relief source: the layer is enabled only in regions where relief data from 2GIS is supported.
- Improved map thread safety: clustering is updated when adding and removing objects.
- Fixed the behavior of suggestions in DirectorySearchView: the query text is completed by words, and object suggestions open the object through a separate callback function.
14.0.0 (2026-08-11)
🌟 Features and improvements
- MapTheme and MapAppearance - API for choosing a light, dark, or standard map theme.
- MapControllerOptions.styleFile, MapControllerOptions.mapAppearance, MapControllerOptions.maxFps, and MapControllerOptions.powerSavingMaxFps - parameters for creating a map.
- MapViewOptions - settings for the initial state of MapView or IMapUIView: DPI, screen density, and the gesture layer factory.
- DirectorySearchView - SwiftUI element for displaying directory search results with suggestions, search history, categories, dynamic filters, and expansion modes. To customize it, use DirectorySearchViewConfiguration, DirectorySearchViewExpansionState, and the IDirectoryViewsFactory or IDirectorySearchViewsFactory factories.
- Category, CategoriesPage, and SearchCategoriesResult - API for working with directory categories.
- CategorySearchQueryBuilder, CategoryListQueryBuilder, CategoryGetByIdsQueryBuilder, CategoryQuery, CategorySortType, CategoryType, and CategoryGeoContext - types for building category queries.
- SearchManager.searchCategories() - method for obtaining directory categories.
- SearchManager.searchByIds() and SearchManager.searchByDirectoryObjectIds() - methods for batch searching for directory objects by identifiers.
- WorkTimeFilter.isOpenAllDay and IsOpenAllDay - filter for searching organizations open 24/7.
- MapRenderedObjectObserver and MapController.renderedObjectObserver - API for observing interactions with rendered map objects.
- GestureManager.multiTouchShiftSettings - separate settings for the multi-finger map shift gesture.
- PublicTransportQuickFilter, PublicTransportQuickFilterOptionSet, PublicTransportRouteSearchOptions.quickFilter, and RouteEditorRoutesInfo.availablePublicTransportQuickFilters - quick filters for public transport routes.
- RouteSummaryProvider, RouteSummary, CarRouteSummary, MotorcycleRouteSummary, BicycleRouteSummary, PedestrianRouteSummary, and ScooterRouteSummary - summary information for routes of different types.
- TripHighlightsCollector, TripHighlights, and NavigationManager.tripHighlightsCollector - collection of statistics for a completed trip.
- PublicTransportSchedule, PublicTransportPlatformSchedule, PublicTransportIntervalSchedule, and PublicTransportPreciseSchedule - public transport schedules in directory objects.
❗ Breaking changes and backward compatibility
- Removed
MapOptions. Initial map parameters are now split between MapControllerOptions and MapViewOptions. In Container.makeMapFactory(), use theoptionsandmapViewOptionsparameters. - Removed
IMapFactory.makeModernMapViewsFactory()andIMapFactory.makeModernMapUIControlsFactory(), as well as the separateIModernMapViewsFactoryandIModernMapUIControlsFactory. The updated design is now the default: use IMapFactory.makeMapViewsFactory() and IMapFactory.makeMapUIControlsFactory(). - Removed the single-object search methods
SearchManager.searchById(),SearchManager.searchByDirectoryObjectId(),SearchManager.searchByIdWithLocale(), andSearchManager.searchByDirectoryObjectIdWithLocale(). Use SearchManager.searchByIds() and SearchManager.searchByDirectoryObjectIds(). - Removed the static methods
SearchQueryBuilder.fromQueryText(),SearchQueryBuilder.fromRubricIds(),SearchQueryBuilder.fromQueryTextAndRubricIds(),SearchQueryBuilder.fromOrgId(), andSearchQueryBuilder.fromBuildingId(). Use SearchQueryBuilder.fromQuery() and the SearchQueryBuilder.setQueryText(), SearchQueryBuilder.setRubricIds(), SearchQueryBuilder.setOrgId(), and SearchQueryBuilder.setBuildingIds() methods. - SearchQueryBuilder.setOrgId() now accepts a required
OrgIdparameter, andSearchQueryBuilder.setBuildingId()is replaced with SearchQueryBuilder.setBuildingIds(). - Removed
SearchQueryBuilder.setSpatialRestriction()andSearchQueryBuilder.setGeoPoint(). Use SearchQueryBuilder.setRestrictionGeometry() and SearchQueryBuilder.setTerritoryOfInterest(). - In PackedSearchQuery, the
orgId,buildingId, andspatialRestrictionproperties are replaced with PackedSearchQuery.orgIds, PackedSearchQuery.buildingIds, PackedSearchQuery.geometryRestriction, PackedSearchQuery.areaOfInterest, and PackedSearchQuery.territoryOfInterest. - In SuggestQueryBuilder, removed the static methods
fromQueryText()andfromQuery(). Use SuggestQueryBuilder.setRestrictionGeometry() and SuggestQueryBuilder.setTerritoryOfInterest() to set spatial restrictions. - Removed the
isOpenanddescriptionproperties from WorkStatus. Use WorkStatus.openStatus, WorkStatus.openStatusHint, WorkStatus.scheduleHint, and WorkStatus.breakHint. - In MultiTouchRecognizeSettings, the
multitouchShiftThresholdMmproperty is renamed to MultiTouchRecognizeSettings.multiTouchShiftThresholdMm. - Removed the
humpsvalue from SoundCategory.
🛠 Bug fixes
- Improved navigator operation with unstable geolocation: added incoming coordinate filtering, GNSS quality tracking, protection against unnecessary route rebuilds, and correct handling of a manually set starting point.
- Fixed route display scenarios: lane bubbles, the camera direction ray, the orientation line in the navigator, road events, the finish screen, and hiding the route line after completion.
- Improved hints and voice announcements in the navigator: added repeat speed limit warning settings, support for new camera types, and correct priorities for sound notifications.
- Fixed route building and selection scenarios: error handling in RouteEditorRoutesInfo, batch route requests, public transport quick filters, scheduled toll roads, and formatting the cost of toll road sections.
- Fixed public transport scenarios: metro maps in transport search results, display of metro, metrotrams, and suburban trains, quick filters, and automatic re-search when they change.
- Fixed issues in DirectorySearchView: content sizing, manual pagination, and the display of categories, filters, and dynamic filter labels.
- Fixed errors in organization work statuses in the directory, including organizations operating nearly around the clock, night shifts, breaks, and schedules for nearly closed venues.
- Fixed map and rendering issues: reopening the map, visibility of markers with
visible = false, disappearing traffic jam tiles when changing the zoom level, delays when changing the size of the geolocation marker, and the flow of destroying dynamic objects. - Increased the maximum map zoom level to 21.
- Improved SwiftUI and UIKit elements of the map and navigator: updated traffic jam and parking lot controls, the indoor control, the navigator dashboard, the mini-map, and dashboard expansion gestures.
🗺 Map style updates
- Styles must be exported again: added and updated styles for the
Worklayer, light metro, adaptive traffic lights, GPX tracks, and custom cursors. - Fixed the display of the
all-tiersunderlay after immersive roads are loaded. - Added the
UnderpassEntranceOrExitstyle for displaying entrances and exits of underground crossings.
13.6.0 (2026-06-22)
🌟 Features and improvements
Added the MapController class:
- MapController - class for managing the map, combining Map and MapGestureRecognizer.
- MapControllerOptions - struct with parameters for creating a MapController.
- MapController.create() - static method for asynchronously creating a MapController based on Context and MapControllerOptions.
- MapController.map - property for obtaining a Map object from the MapController.
- MapController.gestureRecognizer - property for obtaining a MapGestureRecognizer object from the MapController.
🛠 Bug fixes
- Changed the default value for CameraZoomRestrictions.minZoom from
0to2. - Now, the camera auto-tilt recovery works independently of other camera flights.
- Fixed an error in WorkStatus for schedules of organizations operating nearly around the clock.
- Fixed an error that prevented repeated additions and removals of road events via RoadEventManager.
13.5.0 (2026-05-19)
🌟 Features and improvements
- SearchQueryBuilder() - default constructor that enables setting various search parameters: text, rubric IDs, building IDs, or organization IDs.
- SearchQueryBuilder.setQueryText() - method for setting the search query text.
- SearchQueryBuilder.setRubricIds() - method for setting rubric IDs in a search query.
- SearchQueryBuilder.setOrgId() - method for setting a filter by organization ID.
- SearchQueryBuilder.setBuildingId() - method for setting a filter by building ID.
- SearchQueryBuilder.setRestrictionGeometry() - method for setting a strict search area restriction as a geometry.
- SearchQueryBuilder.setTerritoryOfInterest() - method for setting a non-strict search area restriction: if an object is not within the area, it is not discarded, but its rank in search results is lowered.
- SuggestQueryBuilder.setRestrictionGeometry() - method for setting a strict area restriction for search suggestions as a geometry.
- SuggestQueryBuilder.setTerritoryOfInterest() - method for setting a non-strict area restriction for search suggestions: if an object does not fall within the area, it is not discarded, but its rank in search results is lowered.
- PackedSearchQuery.geometryRestriction - property for obtaining the geometry that restricts the search area.
- PackedSearchQuery.territoryOfInterest - property for a non-strict search area restriction: if an object does not fall within the area, it is not discarded, but its rank in search results is lowered.
- PolygonGeometry.elevation - property for setting the polygon elevation above the surface.
- PolylineGeometry.elevation - property for setting the polyline elevation above the surface.
- Polyline.elevation - property for setting the polyline elevation above the surface.
- PolylineOptions.elevation - property for setting the polyline elevation above the surface in polyline options.
- Polygon.elevation - property for setting the polygon elevation above the surface.
- PolygonOptions.elevation - property for setting the polygon elevation above the surface in polygon options.
- DashedPolygonOptions - class for dashed polygon outline options.
- Polygon.dashedPolygonOptions - property for dashed polygon outline options.
- PolygonOptions.dashedPolygonOptions - property for configuring a dashed polygon outline in polygon options.
- Added the ability to set a selected road event on the map and display it via RoadEventInfoView in the NavigationView SwiftUI element.
- RouteEnclosingRectsOptions - class for options to obtain rectangles enclosing a simplified route geometry.
- getRouteEnclosingRects() - method for obtaining a set of rectangles enclosing a simplified route geometry.
- SharedRouteData - class containing information about a pre-built route and its search parameters.
- TrafficRouter.fetchSharedRoute() - method for obtaining a pre-built route and its search parameters by ID. For details, see the Using a pre-built route example.
13.4.0 (2026-04-22)
🌟 Features and improvements
- IModernMapViewsFactory - factory for SwiftUI map controls with an updated design.
- IModernMapUIControlsFactory - factory for UIKit map controls with an updated design.
- The dashboard in NavigationView now supports state changes via a gesture recognizer.
- Added error display in RouteEditorView based on RouterErrorInfo.
- The IndoorControlModel.levelNames property now remains empty if no building with floor plans is displayed on the map, even if the building has one floor.
- LocationQuality - quality of the current location detection.
- MyLocationControlModel.locationQuality - property for obtaining the quality of the current location detection.
- Increased the maximum camera tilt angle CameraPosition.tilt to 70.0.
🛠 Bug fixes
- Added support for iPhone 17e and iPad Air M4 models, considering their PPI when calculating DPI.
- Fixed the display of the DirectoryObjectView full directory object card UI control in landscape orientation.
- Fixed an issue where the LocationService.lastLocation property remained empty if only a LocationService object was created.
- Adjusted the values of WorkStatus.openStatusHint and WorkStatus.scheduleHint properties for organizations operating at night.
- Fixed the disappearance of traffic tiles obtained via TrafficSource when changing the map zoom level.
- Fixed crashes in IndoorManager.
- Improved downloading of voice packages and territory packages via Package.install().
13.3.1 (2026-03-20)
🌟 Features and improvements
- You can now create and download an access key file in Platform Manager: see Get access keys.
- In the key manifest passed to Container, filling in
restrictions/app_idis now optional if you do not plan to use offline data (offlineRouting,offlineMap,offlineDirectory). Otherwise,restrictions/app_idis required. - If you pass an empty floor identifier to IndoorControlModel.activeLevelIndex, the building floor plan will be hidden.
- Closed - structure representing the
Closedstatus of a directory object with details about the reason and time until opening. - ClosedReason - reasons for setting the
Closedstatus for a directory object. - ClosingHours - structure containing information about non-working time intervals and the closing reason for a directory object.
- ClosingSoon - structure representing the
Closing soonstatus of a directory object with details about the reason and the time until closing. - OpenStatus - enumeration describing the detailed current working status of a directory object (
Open,Opening soon,Closing soon,Closed). - Opened - structure representing the
Openstatus of a directory object with details about the time until closing. - OpeningSoon - structure representing the
Opening soonstatus of a directory object with details about the time until opening. - OpeningHours.weekClosingHours - property for storing non-working time intervals of a directory object for each day of the week.
- OpeningHours.isOpen24x7 - property indicating that a directory object is open 24/7.
- WorkStatus.openStatus - property containing the detailed
Openstatus of a directory object. - WorkStatus.openStatusHint - property containing a text hint for the
Openstatus of a directory object. - WorkStatus.scheduleHint - property containing a text hint for a directory object work schedule.
- WorkStatus.breakHint - property containing a text hint for the current or upcoming break in a directory object work schedule.
- Reviews.countWithStars - property for the total number of ratings for a directory object, including reviews without text.
❗ Breaking changes and backward compatibility
- Updated the offline package format to support new directory data.
🛠 Bug fixes
- Traffic tile requests via TrafficSource are now combined to reduce the number of requests.
- Optimized map tile rendering to avoid using all available CPU cores.
- Increased the maximum zoom level to 16 for raster tiles added via RasterTileSource.
- Fixed an issue when adding an animated ModelMapObject where animations were not restarted and models were not rotated towards the camera.
- Fixed the map readiness channel Map.dataLoadingStateChannel in immersive mode when Map.graphicsPreset is set to GraphicsPreset.immersive.
- Fixed the TextStyle.textPlacement behavior in Marker.textStyle: the text position relative to the marker is now updated correctly when the value changes.
- The SearchResultItemView minicard now uses the correct value for the number of reviews (Reviews.countWithStars) instead of the total number of reviews.
- Fixed unsteady movements and missing synchronization between the user location marker and the route line when navigating long routes across regions.
- Fixed kilometer display in route bubbles in the Arabic locale.
- Updated the default ZoomFollowSettings in the navigator to display the visible map area correctly.
- Fixed UX issues in RouteEditorView, such as improved gesture and scrolling handling in landscape mode.
- To request public transport routes via PublicTransportRouteSearchOptions, Routing API is now used by default.
13.2.0 (2026-01-22)
🌟 Features and improvements
- RouteEditorView - SwiftUI element for displaying the route selection screen. To customize it, you can use RouteEditorViewTheme.
- GestureManager and IMapFactory.gestureManager - class for managing map gesture handling.
- MapGestureRecognizerUIViewFactory - factory of UIKit elements for default gesture handling. To revert to the previous map gesture recognition mechanism, use MapGestureUIViewFactory.
- TransformGestureOptionSet - gesture types for controlling the map.
- ScalingRecognizeSettings and ScalingGestureSettings.recognizeSettings - class and property for configuring scaling recognition settings.
- RotationRecognizeSettings and RotationGestureSettings.recognizeSettings - class and property for configuring rotation recognition settings.
- MultiTouchRecognizeSettings and MultiTouchGestureSettings.recognizeSettings - class and property for configuring multi-finger touch recognition settings.
- TiltRecognizeSettings and TiltGestureSettings - class and property for configuring tilt recognition settings.
- CommonGestureSettings and GestureManager.commonSettings - class and property for accessing general settings of map gestures.
- CommonRecognizeSettings - class with settings for recognizing map gestures.
- ScalingKinematicSettings and ScalingGestureSettings.kinematicSettings - class and property for configuring map scaling kinematics.
- RotationKinematicSettings and RotationGestureSettings.kinematicSettings - class and property for configuring map rotation kinematics.
- TiltKinematicSettings and TiltGestureSettings.kinematicSettings - class and property for configuring map tilt kinematics.
- Marker.suppressOnOverlap and MarkerOptions.suppressOnOverlap - property for managing the visibility of the marker icon if objects on the map overlay.
- SimpleClusterObject.suppressOnOverlap and SimpleClusterOptions.suppressOnOverlap - property for managing the visibility of the cluster object icon if objects on the map overlay.
- RoadEventFilterData - class with road event data used for filtering.
- RoadEventFilter and RoadEventSource.roadEventFilter - interface of the filter of displayed road events.
- You can now recreate a Container to free up unused resources (for example, the cache after the first map creation).
🛠 Bug fixes
- Fixed an issue with building offline routes between regions.
- Fixed an issue where the active lane bubble was not displayed on the map when showing the active route.
- Fixed an issue when setting the online map source.
🗺 Map style updates
- Styles must be exported again: fixed the display of lane bubbles in the Arabic locale.
- Fixed maximum zoom level values for all buildings and trees.
13.1.0 (2025-12-17)
🌟 Features and improvements
- Container.makeMapFactory() - asynchronous method for creating an IMapFactory.
- DirectoryObjectView - UI element for displaying full information about a directory object. For customization, you can use DirectoryViewTheme.directoryObjectViewTheme. For overriding internal UI elements, use the IDirectoryObjectViewsFactory.
- DirectoryObject.nearestParkingIds - property for obtaining a list of the nearest parking lots.
- DirectoryObject.nearestStations - property for obtaining a list of the nearest public transport stops or stations.
- DirectoryObject.nearestPlatforms - property for obtaining a list of the nearest stop platforms.
- NearestPlatform - class with information about the nearest stop platform.
- NearestPlatformTransitionType - transition types between the nearest stop platforms.
- NearestStation - class with information about the nearest public transport stop or station.
- LabelingPriority - class for managing the priority of labeling (displaying a label or icon on the map).
- Marker.labelingPriority, MarkerOptions.labelingPriority, and SimpleClusterOptions.labelingPriority - properties for managing the priority of marker labeling.
- TextStyle.labelingPriority - property for managing the priority of marker text labeling.
- MiniMapControlModel - class of the model for managing the minimap in the navigation UI element.
- RouteEditorRoutesInfo.error - property for obtaining detailed information about an error when searching for a route.
- RouterErrorInfo - class for describing an error when building a route.
- RouterErrorCode - categories of errors when building a route.
- RouterErrorSource - sources of errors when building a route.
- Added a Tajik voice package for the navigator.
🛠 Bug fixes
- Fixed a memory leak when displaying traffic jams on the map.
- Fixed padding, sizes, and colors for the SwiftUI RoadEventCreatorView and UIKit IRoadEventCreatorUIView elements for creating road events.
- Removed the
CallKitlibrary from the build, which was used to track phone calls when playing voice instructions in the navigator.
🗺 Map style updates
- Styles must be exported again: fixed the display of building entrance arrows.
- Added a
Route camera directionlayer to display the camera direction ray along the route.
12.10.0 (2025-12-19)
🌟 Features and improvements
- Marker.suppressOnOverlap and MarkerOptions.suppressOnOverlap - property for managing the visibility of the marker icon if objects on the map overlay.
- SimpleClusterObject.suppressOnOverlap and SimpleClusterOptions.suppressOnOverlap - property for managing the visibility of the cluster object icon if objects on the map overlay.
🛠 Bug fixes
- Fixed an issue with building offline routes between regions.
- Removed the
CallKitlibrary from the build, which was used to track phone calls when playing voice instructions in the navigator.
13.0.0 (2025-10-13)
Before upgrading, see the migration instruction.
🌟 Features and improvements
- DgisSource.createImmersiveDgisSource - source of immersive data.
- BaseCamera.changed - channel for notifications about camera state changes.
- CameraChange - class containing information about camera state changes.
- CameraChangeReason - reasons for camera state changes.
- LevelInfo.linkedLevelIds - identifiers of linked floor plans.
- BriefRoadEvent.trustworthy - flag indicating the reliability of a road event.
- IndoorBuilding.mode and IndoorBuilding.modeChannel - mode of displaying buildings with floor plans.
- IndoorBuilding.linkedWith() - method for checking the link between buildings with floor plans.
- RoadEvent.elevation - elevation of a road event.
- BranchesInfo and DirectoryObject.branchesInfo - information about linked organizations.
- FloorsInfo and BuildingInfo.floorsInfo - information about the number of floors in a building.
- SearchManager.search() - method for searching directory objects using SuggestQuery and settings.
- SearchSettings - settings for searching directory objects.
- SearchHistoryKeyStrategy and SearchHistory.setKeyStrategy() - method for setting the strategy for creating keys for search history items.
- IncompleteTextHandler.searchQuery - property of the search query.
- RouteCamera.mobility - flag indicating the mobility of a road camera.
- ObstacleInfo.objectId - identifier of an obstacle object on the route.
- BicycleRouteSearchOptions.avoidUnpavedRoads - flag to avoid unpaved roads on bicycle routes.
- PedestrianRouteSearchOptions.avoidUnpavedRoads - flag to avoid unpaved roads on pedestrian routes.
- ScooterRouteSearchOptions.avoidUnpavedRoads - flag to avoid unpaved roads on scooter routes.
- DataPrefetcher and NavigationManager.dataPrefetcher - class for prefetching map tiles along the route.
- FinishDetector and NavigationManager.finishDetector - class for managing the route completion controller.
- TrafficJamDetector and NavigationManager.trafficJamDetector - class for detecting traffic jams on the route.
- MapLocationController.userControlOverMap - flag for applying custom values of the map zoom level and tilt.
- CrossingType and Route.crossingTypes - types of crossings on the route.
- MotorcycleBriefRouteInfo - class with basic information about a motorcycle route.
- MotorcycleBriefRouteInfoTrafficSpeed - traffic speeds for motorcycle routes.
- MotorcycleRouteSearchOptions - class with parameters of motorcycle routes search.
- PublicTransportInfo.routeInfos - descriptions of public transport routes.
- PublicTransportRouteInfo - class with information about a public transport route.
- PublicTransportCostInfo - class containing information about the cost of travel on public transport.
- RouteTollPaymentPointInfo and Route.tollPaymentPointInfos - class containing information about payment points on a toll road.
- RouteTollPaymentPointType - type of payment on a toll road.
- TraversalType - direction of public transport circular line.
- Package.pause() - method for pausing the package installation or update.
- Package.install(InstallFallback) - method for installing or updating a package with an error handler.
- InstallFallback - interface for defining behavior in case of errors during package installation or update.
- DefaultInstallFallback - factory for creating strategies for handling errors during package installation or update.
- DefaultInstallFallback.noOperation() - method for creating an
InstallFallbackthat performs no operations. - DefaultInstallFallback.retryOnError() - method for creating an
InstallFallbackthat retries the installation in case of a package download error. - VoiceManager.defaultVoice - property for obtaining a voice package based on a list of locales.
- Enabled creating road events in NavigationView using RoadEventCreatorView in the SwiftUI element of the navigator dashboard.
❗ Breaking changes and backward compatibility
-
For thread isolation and compatibility with Swift 6, added the
@MainActorto the project and marked protocols, structures, and functions asSendable. -
Updated the minimum supported iOS version to 16.0.
-
Major changes in SwiftUI elements:
- Renamed the main map layer
MapViewOverlayto MapView and all methods for configuring the layer. - Renamed the
IMapFactory.mapViewOverlayproperty to IMapFactory.mapView. - Renamed the
IMapControlViewFactoryfactory of SwiftUI elements for map control to IMapViewsFactory. - Renamed methods of SwiftUI elements for creating road events to RoadEventCreatorView.
- Renamed methods of SwiftUI elements for configuring the display of road event information to RoadEventInfoView.
- Renamed custom SwiftUI markers and containers on the map
MapMarkerView,MapMarkerViewModel, andMapMarkerViewOverlayto MarkerView, MarkerViewModel, and MarkerOverlayView, respectively. - Renamed the
IMapFactory.mapMarkerViewOverlayproperty to IMapFactory.markerOverlayView. - Renamed the main navigator layer
NavigatorViewto NavigationView. - Renamed the
NavigatorView.navigatorViewFinishButtonCallback()method to NavigationView.finishButtonCallback(). - Renamed the
INavigatorViewFactoryfactory of SwiftUI elements for navigator control to INavigationViewFactory.
- Renamed the main map layer
-
Major changes in UIKit elements:
- Renamed the main map layer
IMapViewto IMapUIView. - Renamed the
IMapFactory.mapViewproperty to IMapFactory.mapUIView. - Renamed interfaces for the gesture processing layer
IMapGestureViewandIMapGestureViewFactoryto IMapGestureUIView and IMapGestureUIViewFactory, respectively. - Renamed the
IMapFactory.gestureViewproperty to IMapFactory.gestureUIView. - Renamed custom UIKit markers and containers on the map
IMarkerView,IMarkerViewFactory, andIMarkerViewOverlayto IMarkerUIView, IMarkerUIViewFactory, and IMarkerOverlayUIView, respectively. - Renamed the
IMapFactory.markerViewOverlayobject to IMapFactory.markerOverlayUIView. - Renamed the
IMapControlFactoryfactory of UIKit elements for map control to IMapUIControlsFactory. - Renamed all public classes for UIKit controls, models, and their factories. For example, renamed the
ZoomControlto ZoomUIControl,TrafficControlto TrafficUIControl, andIndoorControlto IndoorUIControl, etc. - Renamed the
RoadEventCardViewOptionsfactory of UIKit elements for road event cards to IRoadEventUIViewFactory. - Renamed the
IRoadEventCardViewobject to IRoadEventInfoUIView. - Renamed the
ICreateRoadEventViewobject to IRoadEventCreatorUIView. - Renamed the
RoadEventCardViewOptionsobject to RoadEventInfoViewOptions. - Renamed the main navigator layer
INavigationViewto INavigationUIView. - Renamed the
INavigationViewControlsFactoryfactory of UIKit elements for navigator control to INavigationUIControlsFactory. - Renamed the
INavigationMapControlsFactoryfactory of UIKit elements for map control to INavigationMapUIControlsFactory.
- Renamed the main map layer
-
Now, a single channel BaseCamera.changed is used to track camera state changes instead of separate channels for each property. Subscriptions are replaced, and additional filtering of change reasons is added.
-
Changed the method of creating some classes:
- Removed the
getSystemMemoryManagerfunction. To obtain an object for managing system memory, use the SystemMemoryManager.instance() method. - Removed the SearchHistory constructor. To obtain a search history object, use the SearchHistory.instance() method.
- Removed the RoadEventManager constructor. To obtain an object for working with road events, use the RoadEventManager.instance() method.
- Removed the
getHttpCacheManagerfunction. To obtain an object for managing the HTTP cache, use the HttpCacheManager.get() method. - Removed the
getLocaleManagerfunction. To obtain an object for managing application locales, use the LocaleManager.instance() method. - Removed the TrafficCollector constructor. To obtain an object for managing the service for traffic information collection, use the TrafficCollector.instance() method.
- Removed the
getAudioSettingsfunction. To obtain an object for managing application sound, use the AudioSettings.get() method. - Removed the
getPackageManagerfunction. To obtain an object for managing packages, use the PackageManager.instance() method. - Removed the
getTerritoryManagerfunction. To obtain an object for managing territories, use the TerritoryManager.instance() method. - Removed the
getTerritoriesAlongRouteProviderfunction. To obtain an object for extracting a list of territories along a route, use the TerritoriesAlongRouteProvider constructor. - Removed the
getVoiceManagerfunction. To obtain an object for managing voice packages, use the VoiceManager.instance() method.
- Removed the
-
Removed the
buildingLevelsproperty for obtaining floor plans from the DirectoryObject. -
The DirectoryObject.buildingInfo property is now optional.
-
The BuildingInfo.buildingId property is now mandatory and cannot be empty.
-
The LevelInfo.id property is now optional.
-
Changed the type of the PublicTransportDirectoryRouteInfo.color property from
Int?toColor?. -
The SearchQueryBuilder.setGeoPoint() method now accepts an optional value type.
-
The SearchQueryBuilder.setRadius() method now accepts an optional value type.
-
Removed the
getRoadMacroGraphfunction and theRoadMacroGraphclass. Now, to build offline routes between neighboring regions, download the required region packages. -
Removed the class for configuring the position of the bubble with lanes on the route (
LanesCalloutMapPositionandRouteMapObject.lanesCalloutPositions) and the property from the RouteMapObject. -
Renamed the
UIntRouteLongAttributeclass to DoubleRouteLongAttribute. -
Changed the type of the Route.trafficLights property from VoidRouteAttribute to StringRouteAttribute.
-
Added a new transport type
motorcycleto TransportType. -
Added parameters for configuring the style zoom level to the SpeedRangeToStyleZoom constructor.
-
Added the
rampDown,rampUp,smoothRampDown, andsmoothRampUpvalues for ramps to RoadSubtype. -
Added new values of positions and landmarks to CarInstructionCrossroadLandmark.
-
Added the
deepGreenandorangecolor values to TrafficSpeedColor. -
Added the
crossingflag for displaying the start and end of a crossing on a route to RouteMapObjectDisplayFlag. -
Added the
crossingnew type of a route point (the start and end of a crossing) to RoutePointKind. -
Added values for event notifications
betterRoute("better route") andhumps(speed bumps) to SoundCategory.
🛠 Bug fixes
-
Fixed an issue that caused the application crash when running SearchManager.createSmartManager() if there were no downloaded territories.
-
Added support for iPhone 17, iPhone 17 Pro, iPhone 17 Pro Max, and iPhone Air models, considering their PPI when calculating DPI.
-
Fixed an issue in the search history where repeatedly adding the same item caused errors.
-
Fixed an issue where new search queries were not saved in the history when the set limit was reached.
-
Added a filter to hide building floors on the map if their area on the screen is below a certain threshold.
-
Fixed sound notifications in the navigator:
- Fixed an issue where the "camera behind" warning was not voiced.
- Fixed an issue where promo phrases were not voiced despite having a valid voice package.
- Added sound notifications for stairs on the route.
- Fixed an issue where intersection control cameras were voiced as speed control cameras.
- Added sound notifications for route rebuilding for bicycles and scooters.
-
Fixed the navigator operation issues in case of problems with the GPS signal:
- Fixed an issue where the current location marker changed its position when the weak GPS signal detector was active.
- Fixed issues that occurred when the user approached the end point of the route with an unstable GPS signal.
- Added a feature to disable route deviation detection when GPS signal accuracy is low.
- Now, when GPS signal accuracy drops sharply during navigation, the user location is not moved to another place on the map.
-
Fixed the navigator operation issues:
- Fixed an issue where the bubble with information about the route time and length was not displayed on the route search screen if one of the routes lacked unique segments.
- Fixed an issue where the time difference in the alternative route bubble was not updated if the user did not move while using the navigator.
- Removed exit names in bubbles if no direction is specified or the exit leads to an object of the "airport" type.
- Fixed an issue where road event icons did not respond to taps.
- Added support for displaying and coloring traffic jams on unpaved roads.
- Fixed duplication of icons for Moscow MCC, MCD, Aeroexpress, and suburban trains in the bubble of a route with transfers.
- Fixed incorrect display of the route line at intersections.
- Removed the display of an additional icon with lanes for cameras that record failure to give priority to pedestrians.
- Fixed an issue where the user geolocation was incorrectly snapped to the route when returning to it.
- Fixed an issue that caused the application crash when rebuilding a pedestrian route in turn-by-turn mode.
- Fixed behavior where additional icons were displayed on the route after the expiration of a road event.
- Updated the logic for displaying additional icons with lanes for confirmed road events.
- Added a restriction where toll roads are excluded from the route when it is rebuilt if the user selected free roads only.
- Added displaying of notifications about stairs on the route estimated time panel.
- The navigator now continues to guide the user along the route and rebuilds it if necessary, even if the finish pane (with the Finish route button) is closed.
- Updated the logic of lane filtering: lanes that allow straight movement are not excluded from the route lane bubbles.
- Added visualization of blinking of traffic jams on the route at speeds of 80-90 km/h.
-
Fixed the layout of all SwiftUI elements in NavigationView.
-
Fixed the return to position tracking and zoom level in NavigationView. The camera and tracking mode now restore correctly when exiting the route overview.
🗺 Map style updates
- Styles must be exported again: fixed issues with displaying custom and immersive objects.
- Updated all layers in the
Roadsgroup for displaying immersive roads in the main map mode. - Added the
Traffic v13.0.0group for displaying new colors of tiles with traffic jams. - Added the
Car route line v13.0.0group for displaying car routes on immersive roads.
12.8.0 (2025-08-14)
🌟 Features and improvements
- Added support for the Armenian language on the map, in the directory, and for routing. Also added Armenian voice notification packages.
- MiniMapView and NavigationMiniMapView - SwiftUI mini-map elements to be displayed on the map and in NavigatorView.
- SearchResultItemView - SwiftUI element for displaying a mini card of an object in search results. Includes corresponding themes, localization, and auxiliary visual elements and utility components.
- RoadEventCreatorView - SwiftUI element for creating road events.
- RoadEventInfoView - SwiftUI element for displaying road event information.
- IRoadEventViewFactory - factory for creating SwiftUI elements for road events.
- TrafficRouter now allows specifying the route search engine type (online, offline, or hybrid) using RouterType.
- NavigationManager and RouteEditor now support specifying the route search engine (TrafficRouter).
🛠 Bug fixes
- Traffic data via TrafficSource is no longer requested or updated while the application is in the background.
- Improved dashboard layout for trip management in NavigatorView: updated paddings, button sizes, component order and structure, and fixed element height values.
- Adjusted maneuver block paddings in NavigatorView so that messages about GPS signal loss and route recalculation are displayed lower on the screen.
12.7.2 (2025-06-20)
🌟 Features and improvements
- DirectoryObject.platformIds - information about identifiers of public transport platforms in a directory object.
- EntranceInfo.entranceNumber - entrance number of the public transport station.
🛠 Bug fixes
- DirectoryObject.routeInfos now returns correct information about routes that pass through a particular public transport platform.
- DirectoryObject.entrances now returns correct information about metro entrances.
12.7.0 (2025-06-03)
🌟 Features and improvements
- DirectoryObject.routeInfos - information about public transport routes in a directory object.
- ItemMarkerInfo.tradeLicense - information about the organization trade license in a marker.
- SearchResult.nearbyRequested - flag in search results indicating that nearby objects were requested during the search.
- TrafficRoute.routeTollPaymentInfos - information about toll costs for paid sections of the route.
- RoadMacroGraph - global road graph package will be deprecated in next versions. You can build routes between territories using downloaded offline data.
- SwiftUI elements for displaying error messages during route building and for showing the "better route" selection in the NavigatorView.
🗺 Map style updates
- Styles must be exported again: in the navigator, fixed displaying immersive roads and fog.
12.6.3 (2025-05-13)
🛠 Bug fixes
-
Optimized TrafficSource:
- Traffic tiles are requested when changing the map scale and by timer.
- Traffic jam score is updated when changing the region and by timer.
-
Improved map performance when adding polygons with a large number of vertices via MapObjectManager.
12.6.0 (2025-04-17)
🌟 Features and improvements
- TextStyle.suppressOnOverlap - option to hide marker label text when it overlaps with other objects.
🛠 Bug fixes
- Fixed the update of generalization when changing attributes of objects added via the MapObjectManager.withGeneralization() method.
- Fixed an issue where the application would crash when logging network requests.
- Fixed an issue where the application would crash when handling the map tilt gesture.
12.5.0 (2025-03-25)
🌟 Features and improvements
- SearchQueryBuilder.setLocale() - method to define the locale where a search request is executed.
- DirectoryObject.group - combination of objects of different types in one card. For example, a courthouse card contains information about a building as a geographical object and about the court as an organization inside the building.
- SearchQueryWithInfo.rubrics - list of rubrics to search by.
- PackedSearchQuery.locale - search query locale.
- VoiceAssistantView - SwiftUI element to manage voice input. To create the element, use the IDirectoryViewsFactory.makeVoiceAssistantView method.
🛠 Bug fixes
- Fixed an issue that caused a geolocation marker added via MyLocationMapObjectSourcedisappear during the first camera flight.
- Fixed the recovery of displaying the geolocation marker when an application returns from being in the minimized state for a long time.
- Fixed the display of route information on the map when the text is written right-to-left for the RouteEditorSource data source.
- Changed the settings of caching source data on a route. Now the data is cached at a distance of 4000 meters forward from the current position on the route instead of 20000 meters.
🗺 Map style updates
- Styles must be exported again to apply the fix of displaying route information on the map when the text is written right-to-left.
12.4.3 (2025-02-19)
🌟 Features and improvements
- Projection.distanceOnMap() - method for calculating the distance between points on the map that correspond to the specified points on the screen.
- Projection.distanceOnScreen() - method for calculating the distance between points on the screen that correspond to the specified points on the map.
🛠 Bug fixes
- Fixed the display of a circle on the map when adding a Circle object to MapObjectManager.withClustering and MapObjectManager.withGeneralization.
12.4.0 (2025-01-30)
🌟 Features and improvements
- Container.makeNavigatorViewFactory and INavigatorViewFactory - factory for working with navigator SwiftUI elements.
- NavigatorView - container with navigator SwiftUI elements.
- INavigationMapViewsFactory - factory with map SwiftUI elements for NavigatorView.
- INavigationViewsFactory - factory with navigator SwiftUI elements for NavigatorView.
- Map.sublayerAttributes - feature to override attributes of a particular map layer.
- SearchHistory - class for working with search query history: reading, adding, and deleting records with information about search results and search suggestions.
- SearchQueryBuilder.fromOrgId() - method for building a search query by organization identifier.
- SearchQueryBuilder.fromBuildingId() - method for building a search query by building identifier.
- SearchQueryBuilder.fromGeoPoint() - method for building a search query with the center of the search area.
- SearchQueryBuilder.setGeoPoint() and SearchQueryBuilder.setRadius() - methods for specifying the center of the search area and the radius when building a search query.
- DirectoryObject.orgInfo - information about an organization in the directory object.
- MyLocationMapObject.setModelData() - method for specifying a 3D model of a geolocation marker.
- BaseCamera.viewPoint - feature to change the camera viewpoint relative to the size of the map viewport.
- AnimationSettings.animationName - feature to switch 3D model animation by its name.
- Added guide on managing style layers of the map.
🛠 Bug fixes
- Now the position of the 3D model coincides with the camera direction if the bearing value is not specified in ModelMapObject.mapDirection.
- Fixed incorrect configuring attributes for generalizing objects added to the map via MapObjectManager.withClustering. Now changing object attributes at a certain zoom level is applied to all levels.
- Fixed the operation of the attribute for controlling the visibility of an object on the map SimpleMapObject.isVisible when generalizing and clustering objects.
🗺 Map style updates
- Fixed the priority of processing clicks between the geolocation marker and buildings on the map.
12.3.0 (2024-12-18)
🌟 Features and improvements
- ModelMapObject and ModelMapObjectOptions - classes for creating and configuring dynamic objects with 3D models. You can add these objects to the map using MapObjectManager.
- ModelData and IModelFactory - feature to upload custom 3D models.
- Now when you add TrafficSource to the map, traffic tiles are requested based on the screen viewport, regardless of updating the SDK configuration file.
- DirectoryObject.rubricIds - rubric identifiers in the directory object.
- FreeRoamSelector and NavigationManager.freeRoamSelector - feature to enable and disable switching the navigator to
FreeRoammode if the route rebuilds too long. - RouteRebuilder and NavigationManager.routeRebuilder - feature to enable and disable searching for a new route when leaving the current route.
- TrafficRouter.requestRoute - feature to search for a route using previously serialized parameters.
🛠 Bug fixes
- Fixed duplicating branch numbers for organization categories in Suggest.subtitle.
- Fixed an issue of getting coordinates of an object when processing of click in the Marker that is added to the map before the initial map loading.
- Fixed the display of the 3D model of navigator geolocation marker for all route types except pedestrian. For a pedestrian route, a regular model of geolocation marker is displayed.
- Updated navigator configuration to improve performance in poor GPS signal conditions.
- Fixed the display of a next maneuver for left-hand traffic when passing roundabouts in INavigationView.
🗺 Map style updates
- Added a layer for displaying dynamic 3D models.
12.2.1 (2024-12-03)
🛠 Bug fixes
- Fixed the issues that caused performance degradation when displaying a large number of objects on the map.
12.2.0 (2024-11-15)
🌟 Features and improvements
- AnimationSettings - class for configuring the map object animation. Can be applied to objects with the
3D modelandDirectional modellayer types. - MyLocationMapObject.animationSettings - feature to configure the geolocation marker animation if an animated model is loaded as a model in styles.
- MyLocationMapObject.objectAttributes - feature to configure style attributes for a geolocation marker. You can find available attribute values in styles for a corresponding layer.
- RoadEventMapObject.animationSettings - feature to configure the road event animation if an animated model is loaded as a model in styles.
- RoadEvent.id - road event identifier.
- ParkingControlModel - model for switching the visibility of parking lots on the map.
- ItemMarkerInfo.rubricIds - identifiers of rubrics that a marker object belongs to.
- TextHorizontalAlignment - setting to horizontally align a text in a Marker using TextStyle.
- Defined operators for Longitude and Latitude.
- MapMarkerView and MapMarkerViewOverlay - SwiftUI elements for adding custom SwiftUI Views as markers on the map.
- SpeedView - SwiftUI element for displaying speed in the navigation mode.
- RouteMapObjectsProvider and NavigationManager.routeMapObjectsProvider - class for getting route objects on the map.
- RouteMapObject.roadEventObjects - road events on the map for a corresponding route.
- MyLocationMapObjectSourceProvider and NavigationManager.myLocationMapObjectSourceProvider - class for getting a geoposition marker source in the navigator.
🛠 Bug fixes
- Improved the mechanism of getting marker object title ItemMarkerInfo.title. Now it is considered that a marker may have no title.
- Fixed a potential issue during map initialization when a style could be installed before the initialization process was completed.
- Fixed a potential freeze of MapObjectManager when objects are frequently added and removed using the MapObjectManager.removeAndAddObjects method.
- Added additional verification of the correctness of handling the map tilt gesture so that it does not lead to an application crash.
- Fixed an application crash when logging network requests.
- Fixed an issue that caused MapViewOverlay to operate with interruptions when interacting with the map.
- Fixed operation of SwiftUI elements for the map, which previously were recreated during each update of the interface.
- Fixed road events display, which previously worked not for all regions.
- Fixed the display of route arrows in relation to immersive roads of actual width in the navigation mode.
- Fixes a potential issue that prevented the display of lane bubbles on the route in the navigation mode.
🗺 Map style updates
- Fixed style issues when displaying a geolocation marker in the navigation mode with immersive roads of actual width.
- Fixed style issues when displaying building floor plans.
12.1.0 (2024-09-24)
🌟 Features and improvements
- ItemMarkerInfo.title - marker object name.
- DirectoryObject.chargingStation - information about EV charging stations in a directory object.
- Voice.playWelcome() - method for playing a voice sample.
🛠 Bug fixes
- Updated DgisSource.createDgisSource to return the hybrid tiles source of the default map in Full SDK version.
- Improvements to the immersive roads of actual width operation in the navigation mode.
🗺 Map style updates
- Fixed issues in styles when displaying immersive roads of actual width.
- Fixed fog display at different map tilt angles.
12.0.0 (2024-08-19)
Before upgrading, see the migration instruction.
🌟 Features and improvements
-
Immersive roads of actual width are displayed in the navigation mode if:
- Map.graphicsPreset field is set to
IMMERSIVE. HttpCacheis enabled using HttpOptions.useCache.
At the time of the release, roads of actual width are available in several large cities of Russia only.
- Map.graphicsPreset field is set to
-
Fog is displayed to cut off distant map objects when the map is tilted.
-
BaseCamera.viewportRestriction - property for setting a camera viewport.
-
MapOptions.graphicsPreset - property for setting a graphic mode via GraphicsPreset during map initialization.
-
Map.graphicsPreset - property for setting a graphic mode via GraphicsPreset for a created map.
-
Map.graphicsPresetHint - property for obtaining the recommended graphic mode for the given device.
-
Enabled titling the map up to 70 degrees starting from the scale level 18.
-
RasterUrlTemplate - feature for setting a URL template for requesting raster tiles. Can take two values: DefaultRasterUrlTemplate for a common template and WmsRasterUrlTemplate for raster tiles of the WMS standard.
-
MapLocationController.mapToNorthOrientation - property for forcing map orientation to the north.
-
RouteCamera.maxSpeedLimit - property for setting a speed in m/s, exceeding which is captured by the camera.
-
NavigationFollowController.cameraBehaviour - camera mode for tracking geolocation marker in the navigator.
-
Terrain elevation is now considered when displaying road events and traffic jam data on route.
-
If the current position on route is more than 500 away from the next maneuver, the "Go straight" phrase is played.
-
Added support for sound instructions for bicycle and scooter intersections.
-
RouterType - feature for setting the search engine type in AlternativeRoutesProviderSettings to search for alternative routes.
-
toRoutePointin the MillisecondsRouteAttribute.calculateDuration() method - parameter for calculating the duration of moving along the route part towards a particular point. -
TerritoryManager.findByPoint() and TerritoryManager.findByRect() - methods for filtering offline regions available for downloading by
GeoPointandGeoRect.
❗ Breaking changes and backward compatibility
- Removed the
Container.apiKeyOptionsparameter. You can now explicitly pass the key file source usingKeySource,KeyFromAsset,KeyFromFile,andKeyFromString. - Removed the
Container.vendorConfigFileparameter. You can now explicitly pass the configuration file source usingVendorConfig,VendorConfigFromAsset,VendorConfigFromFile, andVendorConfigFromString. - Removed
Container.makeStyleFactory(),Container.makeSearchManagerFactory(),Container.makeSourceFactory(),Container.makeImageFactory(), andContainer.makeLocaleManager()methods. Instead, useContainer.styleFactory,Container.searchManagerFactory,Container.sourceFactory,Container.imageFactory, andContainer.localeManagerfields. - Removed
IPositioningServicesFactoryand theContainer.positioningServices. When creating aContainer, passContainer.locationProviderandContainer.magneticHeadingProviderseparately. - Removed
ILocationService. Instead, useLocationServicewith similar functionality. - Removed
MyLocationControllerandMapLocationController.myLocationIndicatorController. To configure the marker geolocation source, use MyLocationControllerSettings. In the INavigationView, geolocation source is now not substituted. - Changed the HttpOptions structure while keeping its functionality.
- Renamed fields in LogOptions:
osLogLevelandcustomLogLevelare nowsystemLevelandcustomLevelcorrespondingly. - Renamed values in LogLevel:
disabledandfaultare nowoffandfatalcorrespondingly. - Removed the
CameraState.followPositionvalue. Instead, use the Camera.behaviour value. - Extended values for SuggestedType, SuggestorType, and ObjectType so that they now correspond to Places API results.
- Aligned MyLocationMapObjectMarkerType values with standard naming.
- Removed the
createRasterTileDataSource()method. Added a new source RasterTileSource, which enables setting transparency for raster tiles. - Removed
AudioVolume. You can now set instructions volume from 0 to 100 using AudioSettings.volume. - Removed
AudioOptionsandIAudioSettings. UseAudioSettingsto configure sounds in the SDK. - RouteMapObjectDisplayFlag.immersiveRouteParts - flag to use immersive geometry on route parts.
🛠 Bug fixes
- Optimized caching of road events when displaying them on the map.
- Fixed issues that prevented displaying route variants if an invalid variant was included into the list of public transport routes.
- Fixed the record of the covered distance along an alternative route.
- Improved the display of stops on public transport routes.
- Improved erasing of the route when the route finish point is reached.
- Fixed the active route display in poor GPS signal conditions.
- Voice instructions are now not played during navigation in poor GPS signal conditions.
- Distance to the next camera is not considered if it is less than 150 meters.
- Voice instructions are not played when navigation starts.
- Distance to intersection control cameras, public transport lanes, and road markings is not voiced.
- Distance left on route is not voiced if other instructions are expected further on route.
- Pedestrian obstacles and road subtypes for non-pedestrian routes are not voiced.
🗺 Map style updates
- Added layers with immersive roads of actual width.
- Improved various layers so that they are displayed properly if immersive roads of actual width are present on the map.
- Updated geolocation marker designs in normal and navigation modes. Made the marker display in light and dark themes consistent.
- Added support for new Moscow Metro line MCD-4A.
- Fixed styles of Moscow Metro lines MCD-3, MCD-4, MCD-4A, and MCD-5.
- Added stop captions on public transport routes.
- Enabled displaying stop captions when viewing the full route of a selected public transport.