Android SDK Release notes | 2GIS Documentation

Release notes

  • CircleOptions.dashedStrokeOptions and Circle.dashedStrokeOptions options for creating a dashed circle or adding a dashed outline for an existing circle.
  • RoadEventSource.setHighlighted method for highlighting road events with IDs from RoadEventMapObject.id.
  • calculateClosestPoint function for obtaining the closes point on the map relative to the given point.
  • Fixes performance issues of layedId defined in MapObjectManager: now it impacts the display of clustered markers.
  • Download styles again to ensure valid operation of dashed circles.
  • Added the DirectoryObject.buildingInfo structure with reference information about a building: buildingName, purposeName, purposeCode, and buildingLevels. DirectoryObject.buildingLevels is marked as deprecated and will be removed in the future major releases.
  • Added DirectoryObject.address.fiasCode - the FIAS (Federal Information Address System) code of a directory object.
  • Added the fiasCode field (the FIAS code of the street) to DirectoryObject.address.components in AddressComponent.streetAddress and AddressComponent.number structures.

For all types of Mobile SDK:

  • Styles must be downloaded again.

  • Changed the process of working with FollowController:

    • Removed createRawMyLocationController and createSmoothMyLocationController methods. Added the MyLocationController constructor for creating controllers of geolocation marker movements.
    • Removed FollowBearing.SATELLITE and FollowBearing.MAGNETIC values because now you do not need to specify the direction source. Added the FollowBearing.ON value for enabling the following mode (the source is selected automatically).
    • Removed the FollowPosition.tilt field. Now you need to enable tilt following separately. Added a new tilt parameter to the CameraBehaviour constructor for tilt following. Added a new CameraBehaviour constructor with a tilt parameter to enable following only the tilt.
    • Removed FollowValue.SATELLITE_BEARING, FollowValue.MAGNETIC_BEARING, and FollowValue.ACCURACY values. Instead, added the FollowValue.bearing value with automatic selection of the source.
    • Removed satelliteBearing, magneticBearing, and accuracy methods from the CustomFollowController interface. Added the CustomFollowController.bearing method instead.
    • Removed setClock, satelliteBearing, magneticBearing, and accuracy methods from FollowController. Added onAddedToMap, onRemovedFromMap, and bearing methods instead.
    • Removed the FollowController.nextTimestampChannel channel. Added FollowController.changedChannel instead.
    • Changed the signature of the FollowController.updateValues method.
    • Removed the PlatformLocationFollowController controller. Instead, added BearingFollowController and CoordinatesFollowController controllers for following the map direction and map position coordinates respectively.
    • Changed the constructor of the StyleZoomFollowController controller. Removed the StyleZoomFollowController.setAnimationDuration method.
    • Changed the constructor of the TiltFollowController controller. Removed TiltFollowController.setTilt and TiltFollowController.setAnimationDuration methods.
    • Replaced parameters of the FollowController.setThresholds with the typed ones.
    • Removed the FollowControllerClock class. Changed the type of the FollowController.setClock method parameter to timestamp.
    • Removed TransitionType. The MyLocationControlModel constructor does not take transitionType now. Removed the CameraBehaviour.transitionType field. Removed the transitionType parameter from the CameraBehaviour constructor.
    • Removed MyLocationDirectionBehaviour. The MyLocationMapObjectSource constructor of a geolocation source does not take directionBehaviour now. Removed the MyLocationMapObjectSource.setDirectionBehaviour method.
  • Removed the BaseCamera.styleZoomToTiltRelation field.

  • Renamed the MagneticHeadingProvider class to HeadingProvider.

  • Updated the LocaleManager.overrideLocales method to take a list of structures Locale with separate language and region fields.

  • Removed PackageManager and Package from the SDK Map build. The product size has reduced.

  • Removed lightTheme and darkTheme fields from MapOptions. To set the theme, use the MapTheme class in MapOptions.setTheme and MapView.setTheme methods.

Additionally for the full version:

  • Updated Voice.playWelcome to return Future, which becomes ready when sample playing is finished.
  • Removed the RoadSubtype.STAIRWAY field. Instead, added RoadSubtype.STAIRWAY_UP and RoadSubtype.STAIRWAY_DOWN fields for using stairways with explicit direction.
  • Removed the NavigationFollowController.mapTiltController field.
  • Enabled throwing an exception when attempting to start the navigator in the guidance or simulation mode with a public transport route.
  • Disabled cashing of FreeRoam tiles during navigation.
  • Updated MyLocationMapObjectSource for the navigator to be installed inside NavigationView.
  • Started supporting Vulkan. If Vulkan is unavailable on the device, OpenGL version 3 is used. By default, OpenGL is enabled because Vulkan support is under development and is an experimental feature.
  • Enabled immersive trees to be displayed on the map by default.
  • Supported a new model for displaying the current location marker. To override the current location icon, pass MyLocationMapObjectMarkerType.SVG_ICON to the MyLocationMapObjectSource and edit a corresponding layer in styles.
  • Added the BaseCamera.changePosition method for changing only certain parameters of camera position. The method takes a new CameraPositionChange structure.
  • Added the Camera.move method for launching animated map movement with a possibility to reset tilt following.
  • Added the styleZoomToTiltRelation parameter for calcPosition and zoomOutToFit functions. The parameter represents a function of camera tilt angle dependence on the style zoom level.
  • Added the createDefaultStyleZoomToTiltRelation function for getting the dependence of the camera tilt angle on the style zoom level for the standard tilt following controller.
  • Added the BearingSource enum, a source of direction.
  • Enabled overriding the network client in DGis.initialize using the HttpClient interface.
  • Added MarkerOptions.iconAnimationMode and Marker.iconAnimationMode to enable setting animation modes in markers. The mode can be normal or looped.
  • Added SearchResult.actionWidgets and SearchResult.mainWidgets for dynamic filtering of the obtained search results. Added the Widget class that works as a widget for filtering search results.
  • Added locales and systemLocales methods and corresponding channels to LocaleManager for getting all locales of an application and system locales.
  • Added the createDefaultMaxTiltRestriction function for getting the default dependence of the tilt angle restriction on the scale. By default, this dependence is set during map creation: BaseCamera.maxTiltRestriction.
  • Added the IndoorManager.setIndoorState method for managing the display of floor plans on the map.
  • Added the LocationService interface for getting the latest value of the user geolocation in a convenient way.
  • Added the new SearchLayout UI control that implements the search engine logic: search, suggestions, display of search results.
  • Added the PackedMapState.cameraBehaviour field for serializing the camera tracking mode.
  • Added the error field to PackageInfo: an error that occurs during an attempt to download and/or install a package.
  • Added the NavigationManager.alternativeRouteSelector field for selecting an alternative route.
  • Added the Route.bicycleLanes field: an indication of a dedicated cycle lane.
  • Added the RoutePointKind.BICYCLE_LANE value: the beginning and end of a cycle lane.
  • Added the PedestrianRouteSearchOptions.avoidUnderpassesAndOverpasses flag: avoid pedestrian underpasses and overpasses.
  • Added the RouteMapObjectSource.replaceObject for replacing one route object in source with another.
  • Added the NavigationFollowController.mapLocationController field. MapLocationController is a controller to manage map positioning in the navigator.
  • Added the NavigationFollowController.cameraBehaviour field to enable changing the mode of map following the geolocation marker.
  • Added the ZoomFollowSettings.speedRangeToStyleZoomFreeRoamSequence field: a sequence of speed ranges and corresponding scales in the FreeRoam navigation mode.
  • Changed working with FollowController:

    • Removed createRawMyLocationController and createSmoothMyLocationController methods. Added the MyLocationController constructor for creating controllers of geolocation marker movements.
    • Removed FollowBearing.SATELLITE and FollowBearing.MAGNETIC values because now you do not need to specify the direction source. Added the FollowBearing.ON value for enabling the following mode (the source is selected automatically).
    • Removed the FollowPosition.tilt field. Now you need to enable tilt following separately. Added a new tilt parameter to the CameraBehaviour constructor for tilt following. Added a new CameraBehaviour constructor with a tilt parameter to enable following only the tilt.
    • Removed FollowValue.SATELLITE_BEARING, FollowValue.MAGNETIC_BEARING, and FollowValue.ACCURACY values. Instead, added the FollowValue.bearing value with automatic selection of the source.
    • Removed satelliteBearing, magneticBearing, and accuracy methods from the CustomFollowController interface. Added the CustomFollowController.bearing method instead.
    • Removed setClock, satelliteBearing, magneticBearing, and accuracy methods from FollowController. Added onAddedToMap, onRemovedFromMap, and bearing methods instead.
    • Removed the FollowController.nextTimestampChannel channel. Added FollowController.changedChannel instead.
    • Changed the signature of the FollowController.updateValues method.
    • Removed the PlatformLocationFollowController controller. Instead, added BearingFollowController and CoordinatesFollowController controllers for following the map direction and map position coordinates respectively.
    • Changed the constructor of the StyleZoomFollowController controller. Removed the StyleZoomFollowController.setAnimationDuration method.
    • Changed the constructor of the TiltFollowController controller. Removed TiltFollowController.setTilt and TiltFollowController.setAnimationDuration methods.
    • Replaced parameters of the FollowController.setThresholds with the typed ones.
    • Removed the FollowControllerClock class. Changed the type of the FollowController.setClock method parameter to timestamp.
    • Removed TransitionType. The MyLocationControlModel constructor does not take transitionType now. Removed the CameraBehaviour.transitionType field. Removed the transitionType parameter from the CameraBehaviour constructor.
    • Removed MyLocationDirectionBehaviour. The MyLocationMapObjectSource constructor of a geolocation source does not take directionBehaviour now. Removed the MyLocationMapObjectSource.setDirectionBehaviour method.
  • Removed the BaseCamera.styleZoomToTiltRelation field.

  • Renamed the MagneticHeadingProvider class to HeadingProvider.

  • Updated the LocaleManager.overrideLocales method to take a list of structures Locale with separate language and region fields.

  • Removed PackageManager and Package from the SDK Map build. The product size has reduced.

  • Updated Voice.playWelcome to return Future, which becomes ready when sample playing is finished.

  • Removed the RoadSubtype.STAIRWAY field. Instead, added RoadSubtype.STAIRWAY_UP and RoadSubtype.STAIRWAY_DOWN fields for using stairways with explicit direction.

  • Removed the NavigationFollowController.mapTiltController field.

  • Enabled throwing an exception when attempting to start the navigator in the guidance or simulation mode with a public transport route.

  • Disabled cashing of FreeRoam tiles during navigation.

  • Updated MyLocationMapObjectSource for the navigator to be installed inside NavigationView.

  • Removed lightTheme and darkTheme fields from MapOptions. To set the theme, use the MapTheme class in MapOptions.setTheme and MapView.setTheme methods.

  • When dynamic objects are updated frequently (around 100 FPS), the map freezes.
  • Optimized re-rending of map frames after any changes.

  • Fixed the way traffic jams are displayed on the map depending on the zoom level.

  • Improved the smoothness of geolocation marker update.

  • Fixed the behavior of the SimpleClusterObject.setIcon method during the first call.

  • Improved creating of map snapshots using the MapView.takeShapshot method: now the state of map loading (loaded value of Map.dataLoadingState) is considered.

  • Fixed clustering via MapObjectManager.withClustering that worked incorrectly with fractional values of minZoom and maxZoom.

  • Updated the company logo in the copyright and map snapshots.

  • Fixed the exception returned if corrupted styles are loaded into the map.

  • Fixed the display of UI elements from DefaultNavigationControls in the Arabic locale.

  • Improved the calculation of the distance for playing preliminary instructions for a maneuver: now lanes are considered.

  • Improved the playing of the final phrase in the navigation mode: now pedestrian route is considered.

  • Fixed an issue that prevented lane callouts from displaying the route direction.

  • Fixed the creation of lane callouts: now speed limits are not considered.

  • Fixed the display of callouts for bus lanes going straight with "No entry" sign for other vehicles.

  • Fixed the display of route suggestions:

    • Suggested better route is now not removed if a user explicitly declined switching to it.
    • Alternative routes are now removed from the map when the interchange with them is too far from the following position even if they can still be attracted.
    • Alternative routes that branch from the main route in the same point and are equally directed are now disregarded.
    • Suggestion of a better route is now revoked when the route is not considered a better one anymore after updating the traffic jam data for the route.
  • Fixed camera warnings: now notifications of camera dummies are not voiced.

  • Fixed the NavigationView behavior to display only the remaining part of the route when requested to display the full route.

  • Disabled cashing of FreeRoam tiles during navigation by default. This is done to reduce the number of backend requests.

  • Added styles for traffic lights.
  • Added immersive models of trees and buildings.
  • Added support of new lines of Moscow Metro: MCD-3 and MCD-4.
  • Optimized immersive models of trees.
  • Added a new model for displaying the current location marker.
  • Added MarkerOptions.iconAnimationMode and Marker.iconAnimationMode to enable setting animation modes in markers. The mode can be normal or looped.
  • Added the platformHttpClient parameter to DGis.initialize to set a custom implementation of a network client. To override the network client, create an implementation of the HttpClient interface.
  • 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 a crash when changing GPS availability using DefaultLocationSource.
  • 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 a crash when changing GPS availability using DefaultLocationSource.
  • Enabled specifying excluded areas via ExcludedArea when searching for routes.
  • Fixed the issue potentially causing program crashes when a marker is added to the map with a caption using Marker.

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, HYBRID_ONLINE_FIRST, and HYBRID_OFFLINE_FIRST.
  • The FollowController now returns StyleZoom instead of Zoom.
  • Renamed FollowValue.ZOOM to FollowValue.STYLE_ZOOM.
  • 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 and BaseCamera.setPositionPoint methods and the CameraPositionPointChangeBehaviour enum. Now the BaseCamera.padding and BaseCamera.positionPoint fields are setters.
  • Removed the Camera.animatedMoveStarted and Camera.animatedMoveFinished methods. Use the Camera.stateChannel channel instead.
  • Renamed the IndoorControlModel.levelNames and IndoorControlModel.activeLevelIndex channels to IndoorControlModel.levelNamesChannel and IndoorControlModel.activeLevelIndexChannel respectively. Removed the IndoorControlModel.onLevelClicked method. Renamed the IndoorControlModel.isMarkedLevel method to IndoorControlModel.isLevelMarked.

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.FREE_ROAM 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 the imageFromLottieJSON method. The imageFromAsset method now supports JSON files with Lottie animation.
  • Added the dynamicFilters field to SearchResult: dynamic filters that can be additionally applied to search results.
  • Added the dynamic field to 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. The Model.betterRouteChannel is a channel for notifications about alternative routes appearing. The 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.
  • 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, HYBRID_ONLINE_FIRST, and HYBRID_OFFLINE_FIRST.
  • The FollowController now returns StyleZoom instead of Zoom.
  • Renamed FollowValue.ZOOM to FollowValue.STYLE_ZOOM.
  • 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 and BaseCamera.setPositionPoint methods and the CameraPositionPointChangeBehaviour enum. Now the BaseCamera.padding and BaseCamera.positionPoint field are setters.
  • Removed the Camera.animatedMoveStarted and Camera.animatedMoveFinished methods. Use the Camera.stateChannel channel instead.
  • Renamed the IndoorControlModel.levelNames and IndoorControlModel.activeLevelIndex channels to IndoorControlModel.levelNamesChannel and IndoorControlModel.activeLevelIndexChannel respectively. Removed the IndoorControlModel.onLevelClicked method. Renamed the IndoorControlModel.isMarkedLevel method to IndoorControlModel.isLevelMarked.
  • 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.FREE_ROAM 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 flyover.
  • 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.
  • 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 that could result in a camera (in a rest state) flying to the current location after the navigation is finished.
  • 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.
  • Enabled defining IDs for request in WebAPI for On-premise keys.
  • Updated the logo in the map copyright.
  • Added a new lastPosition property in DefaultLocationSource showing 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).
  • 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 the showOsmCopyright method 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.
  • Improved correctness of calculating points of difference between the primary route and a better one.
  • 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 the position.
  • Enabled the ZoomFollowController builder to take the Map parameter.
  • Removed the showOsmCopyright method 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.