Announcements

Last edit: 2023.11.06

This page contains important announcements about new Android features, fixes, or breaking changes shared in advance with our developer community. For the latest changes make sure to check the Release Notes page.

Announcing breaking changes: November 06, 2023

General

What is changing?

  • Rename CommercialVehicleProperty to IsCommercialProperty in com.tomtom.sdk.vehicle.property.
  • Rename VehicleUpdateOption to PropertyId in package com.tomtom.sdk.vehicle and move it to package com.tomom.sdk.vehicle.property.
  • Rename vehicleUpdateOptions parameter to trackedProperties in addVehicleUpdatedListener method of DefaultVehicleProvider in package com.tomtom.sdk.vehicle.
  • Rename the below Companion.option of every VehicleProperty, CombustionEngineProperty and ElectricEngineProperty to Companion.id in package com.tomtom.sdk.vehicle.property:
    • AxleWeightProperty.option to AxleWeightProperty.id
    • CombustionEngineProperties.option to CombustionEngineProperties.id
    • IsCommercialProperty.option to IsCommercialProperty.id
    • ElectricEngineProperties.option to ElectricEngineProperties.id
    • HeightProperty.option to HeightProperty.id
    • LengthProperty.option to LengthProperty.id
    • LoadTypeProperty.option to LoadTypeProperty.id
    • MaxSpeedProperty.option to MaxSpeedProperty.id
    • WeightProperty.option to WeightProperty.id
    • WidthProperty.option to WidthProperty.id
    • AltitudeChangeEfficiencyProperty.option to AltitudeChangeEfficiencyProperty.id
    • VelocityChangeEfficiencyProperty.option to VelocityChangeEfficiencyProperty.id
    • AuxiliaryPowerProperty.option to AuxiliaryPowerProperty.id
    • CurrentFuelProperty.option to CurrentFuelProperty.id
    • FuelEnergyDensityProperty.option to FuelEnergyDensityProperty.id
    • SpeedConsumptionProperty.option to SpeedConsumptionProperty.id
    • AltitudeChangeEnergyProperty.option to AltitudeChangeEnergyProperty.id
    • AuxiliaryPowerProperty.option to AuxiliaryPowerProperty.id
    • BatteryCurveProperty.option to BatteryCurveProperty.id
    • ChargingConnectorsProperty.option to ChargingConnectorsProperty.id
    • ChargingTimeOffsetProperty.option to ChargingTimeOffsetProperty.id
    • CurrentChargeProperty.option to CurrentChargeProperty.id
    • MaxChargeProperty.option to MaxChargeProperty.id
    • SpeedConsumptionProperty.option to SpeedConsumptionProperty.id
    • AdrTunnelRestrictionCodeProperty.option to AdrTunnelRestrictionCodeProperty.id

What is changing?

  • Rename the following Poi and its related data structures to Location and Vehicle modules

    • com.tomtom.sdk.search.model.poi.Poi to com.tomtom.sdk.location.poi.Poi
    • com.tomtom.sdk.search.model.poi.PoiId to com.tomtom.sdk.location.poi.PoiId
    • com.tomtom.sdk.search.model.result.Source to com.tomtom.sdk.location.poi.Source
    • com.tomtom.sdk.search.model.poi.PoiCategory to com.tomtom.sdk.location.poi.PoiCategory
    • com.tomtom.sdk.search.model.poi.CategoryId to com.tomtom.sdk.location.poi.CategoryId
    • com.tomtom.sdk.search.model.poi.StandardCategoryId to com.tomtom.sdk.location.poi.StandardCategoryId
    • com.tomtom.sdk.search.model.poi.Brand to com.tomtom.sdk.location.poi.Brand
    • com.tomtom.sdk.search.model.time.OpeningHours to com.tomtom.sdk.location.poi.time.OpeningHours
    • com.tomtom.sdk.search.model.time.OpeningHoursMode to com.tomtom.sdk.location.poi.time.OpeningHoursMode
    • com.tomtom.sdk.search.model.fuel.FuelType to com.tomtom.sdk.vehicle.FuelType
  • The client code needs to align the package import statements with the above changes. For example,

How it was

1import com.tomtom.sdk.search.model.fuel.FuelType
2import com.tomtom.sdk.search.model.poi.CategoryId
3import com.tomtom.sdk.search.model.poi.PoiId
4import com.tomtom.sdk.search.model.poi.StandardCategoryId

How it is now

1import com.tomtom.sdk.vehicle.FuelType
2import com.tomtom.sdk.location.poi.CategoryId
3import com.tomtom.sdk.location.poi.PoiId
4import com.tomtom.sdk.location.poi.StandardCategoryId
  • Interface change for custom POIs:
    • Use com.tomtom.sdk.search.customdata.CustomPoiProvider instead of com.tomtom.sdk.search.customdata.CustomSearchDataProvider
    • Use com.tomtom.sdk.search.customdata.CustomPoi instead of com.tomtom.sdk.search.model.customdata.CustomRecord.CustomPoi
    • 'OfflineSearch', OnlineWithCustomPoiSearch and HybridSearch overloaded factory create method takes List<CustomPoiProvider> instead of List<CustomSearchDataProvider<CustomRecord.CustomPoi>>

Setting the custom POIs to the provider:

How it was

customPoiDataProvider.setRecords(customPOIs)

How it is now

customPoiProvider.setCustomPois(customPOIs)

Creating a custom POI provider:

How it was

val customPoiDataProvider = CustomPoiDataProviderFactory.create("provider name")

How it is now

val customPoiProvider = CustomPoiProvider("provider name")

Creating a set of custom POIs to inject to the search engine:

How it was

1val customPOIs = setOf(
2 CustomRecord.CustomPoi(
3 recordId = "custom-1",
4 place = Place(
5 coordinate = GeoPoint(latitude = 52.12, longitude = 4.8),
6 address = Address(
7 streetName = "Toccatastraat",
8 streetNumber = "14",
9 countryCodeIso3 = "NLD",
10 municipality = "Almere",
11 ),
12 entryPoints = listOf(
13 EntryPoint(
14 EntryType.Main,
15 GeoPoint(latitude = 52.121, longitude = 4.81),
16 ),
17 ),
18 ),
19 poi = Poi(
20 names = setOf("custom poi 1"),
21 ),
22 ),
23)

How it is now

1val customPOIs = setOf(
2 CustomPoi(
3 id = "custom-1",
4 place = Place(
5 coordinate = GeoPoint(latitude = 52.12, longitude = 4.8),
6 address = Address(
7 streetName = "Toccatastraat",
8 streetNumber = "14",
9 countryCodeIso3 = "NLD",
10 municipality = "Almere"
11 ),
12 entryPoints = listOf(
13 EntryPoint(
14 EntryType.Main,
15 GeoPoint(latitude = 52.121, longitude = 4.81)
16 )
17 )
18 ),
19 poi = Poi(
20 names = setOf("custom poi 1")
21 )
22 )
23)

Instanciating a search engine instance with custom POI data (similar for offlineSearch and HybridSearch):

How it was

1val searchApiWithCustomDataProvider = OnlineSearch.create(
2 context,
3 "YOUR_API_KEY",
4 listOf(customPoiDataProvider),
5)

How it is now

1val searchApiWithCustomDataProvider = OnlineSearch.create(
2 context,
3 "YOUR_API_KEY",
4 listOf(customPoiProvider)
5)

What is changing?

  • We are renaming com.tomtom.sdk.navigation.ui.NavigationUiOptions.units to com.tomtom.sdk.navigation.ui.NavigationUiOptions.unitSystemType
  • We are replacing com.tomtom.sdk.common.measures.UnitSystem with com.tomtom.sdk.navigation.UnitSystemType in com.tomtom.sdk.navigation.ui.NavigationUiOptions
  • Replace TomTomNavigation::acceptProposedRoute with TomTomNavigation::selectActiveRoute(routeId: RouteId). The following example shows how a proposed route can be accepted now:

Accept proposed route

1navigation.addReplannedRouteProposedListener(object : ReplannedRouteProposedListener {
2 override fun onReplannedRouteProposed(replannedRoute: ReplannedRoute) {
3 navigation.selectActiveRoute(replannedRoute.route.id)
4 }
  • com.tomtom.sdk.routing.online.model.information.InstructionGroup was incorrectly exposed in the API. We now remove this data class from the public API. It should not affect any clients as this is simply used to model the Routing API response and not used anywhere close to the API surface.

Minor changes

  • We are changing the default guidance engine from StaticGuidanceEngine to DynamicGuidanceEngine. When this change goes into effect, a com.tomtom.sdk.navigation.hybrid.Configuration object is going to create a dynamic guidance engine unless configured differently by the SDK client.

Announcing breaking changes: October 30, 2023

General

What is changing?

  • Rename package com.tomtom.sdk.vehicle.parameters to com.tomtom.sdk.vehicle.property.
  • Rename parameter updatedParameters to updatedProperties in method updateVehicleState of com.tomtom.sdk.vehicle.DefaultVehicleProvider.
  • Rename the following vehicle parameters in package com.tomtom.sdk.vehicle.parameters:
    • AdrTunnelRestrictionCodeParameter to AdrTunnelRestrictionCodeProperty.
    • CombustionEngineParameters to CombustionEngineProperties.
    • ElectricEngineParameters to ElectricEngineProperties.
    • LoadType to LoadTypeProperty.
    • MaxSpeed to MaxSpeedProperty.
    • VehicleParameter to VehicleProperty.
    • VehicleLength to LengthProperty.
    • VehicleHeight to HeightProperty.
    • VehicleWidth to WidthProperty.
    • CombustionEngineParameter to CombustionEngineProperty and move to package com.tomtom.sdk.vehicle.property.engine.
    • ElectricEngineParameter to ElectricEngineProperty and move to package com.tomtom.sdk.vehicle.property.engine.
    • VelocityChangeEfficiencyParameter to VelocityChangeEfficiencyProperty and move to package com.tomtom.sdk.vehicle.property.engine.
    • AltitudeChangeEfficiencyParameter to AltitudeChangeEfficiencyProperty and move to package com.tomtom.sdk.vehicle.property.engine. - AuxiliaryFuelPower to AuxiliaryPowerProperty and move to package com.tomtom.sdk.vehicle.property.engine.combustion.
    • CurrentFuel to CurrentFuelProperty and move to package com.tomtom.sdk.vehicle.property.engine.combustion.
    • FuelEnergyDensity to FuelEnergyDensityProperty and move to package com.tomtom.sdk.vehicle.property.engine.combustion.
    • SpeedFuelConsumption to SpeedConsumption and move to package com.tomtom.sdk.vehicle.property.engine.combustion.
    • AltitudeChangeEnergyParameter to AltitudeChangeEnergyProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
    • AuxiliaryPower to AuxiliaryPowerProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
    • BatteryCurve to BatteryCurveProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
    • ChargingConnectors to ChargingConnectorsProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
    • ChargingTimeOffset to ChargingTimeOffsetProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
    • CurrentCharge to CurrentChargeProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
    • MaxCharge to MaxChargeProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
    • SpeedConsumption to SpeedConsumptionProperty and move to package com.tomtom.sdk.vehicle.property.engine.electric.
  • Rename the following VehicleUpdateOption values in package com.tomtom.sdk.vehicle: -VehicleUpdateOption.SpeedConsumption to VehicleUpdateOption.ElectricSpeedConsumption.
    • VehicleUpdateOption.SpeedFuelConsumption to VehicleUpdateOption.CombustionSpeedConsumption.
    • VehicleUpdateOption.AuxiliaryFuelPower to VehicleUpdateOption.CombustionAuxiliaryPower.
    • VehicleUpdateOption.AuxiliaryPower to VehicleUpdateOption.ElectricAuxiliaryPower.

Announcing breaking changes: October 23, 2023

What is changing?

  • We are removing com.tomtom.sdk.navigation.NavigationHistorySnapshot class.
  • We are removing all LocationContextProviderEngines:
    • navigation:navigation-location-context-provider-engine-common.
    • navigation:navigation-location-context-provider-engine-hybrid.
    • navigation:navigation-location-context-provider-engine-offline.
    • navigation:navigation-location-context-provider-engine-tilestore.
    • navigation:navigation-location-context-provider-engine-unified.

Announcing breaking changes: October 16, 2023

General

We are refactoring the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegion class.

What is changing?

  • We are converting the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegion from a data to a regular class.

What do you need to do?

  • You must stop using component1, component2, component3 and copy methods or provide an implementation for them as they are no longer supported.

We are refactoring the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionGraph class.

What is changing?

  • We are converting the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionGraph from a data to a regular class.

What do you need to do?

  • You must stop using component1 and copy methods or provide an implementation for them as they are no longer supported.

We are refactoring the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionOperation class.

What is changing?

  • We are converting the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionOperation from a data to a regular class.

What do you need to do?

  • You must stop using component1, component2 and copy methods or provide an implementation for them as they are no longer supported.

We are refactoring the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionState class.

What is changing?

  • We are converting the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionState from a data to a regular class.

What do you need to do?

  • You must stop using component1, component2, component3, component4 and component5 methods or provide an implementation for them as they are no longer supported.

We are refactoring the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionStatesData class.

What is changing?

  • We are converting the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CompositeRegionStatesData from a data to a regular class.

What do you need to do?

  • You must stop using component1 and copy methods or provide an implementation for them as they are no longer supported.

We are refactoring the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CurrentCompositeRegionOperation class.

What is changing?

  • We are converting the com.tomtom.sdk.datamanagement.nds.update.compositeregion.CurrentCompositeRegionOperation from a data to a regular class.

What do you need to do?

  • You must stop using component1, component2 and copy methods or provide an implementation for them as they are no longer supported.

What is changing?

  • We are removing the following:

    • com.tomtom.sdk.navigation.replanning.MaintainRoutesMode.
    • com.tomtom.sdk.navigation.replanning.MaintainRoutesMode parameter from the com.tomtom.sdk.navigation.TomTomNavigationFactory factory method.
    • com.tomtom.sdk.navigation.replanning.MaintainRoutesMode property from the com.tomtom.sdk.navigation.online.Configuration.
    • com.tomtom.sdk.navigation.replanning.MaintainRoutesMode property from the com.tomtom.sdk.navigation.offroad.Configuration.
    • com.tomtom.sdk.navigation.replanning.MaintainRoutesMode property from the com.tomtom.sdk.navigation.offline.Configuration.
    • com.tomtom.sdk.navigation.replanning.MaintainRoutesMode property from the com.tomtom.sdk.navigation.hybrid.Configuration.
  • We are renaming the com.tomtom.sdk.navigation.TomTomNavigation.markWaypointAsVisited(RouteStop) to com.tomtom.sdk.navigation.TomTomNavigation.departFromWaypoint(RouteStop).

  • We are making the com.tomtom.sdk.navigation.TomTomNavigation.language property read-only; now it will contain the current language used in navigation and will be updated after a route replan.

  • We are introducing the com.tomtom.sdk.navigation.TomTomNavigation.preferredLanguage property for updating the current navigation language.

Announcing breaking changes: October 9, 2023

Maps

We are refactoring the RegionGraphNodeState class:

What is changing?

  • We are converting the RegionGraphNodeState from a data to a regular class.

What do you need to do?

  • You must stop using component1, component2, component3, component4, component5 and copy methods or provide an implementation for them as they are no longer supported.

We are refactoring the RegionsAroundPosition class:

What is changing?

  • We are converting the RegionsAroundPosition from a data to a regular class.

What do you need to do?

  • You must stop using the component1 and copy methods or provide an implementation for them as they are no longer supported.

Routing

What is changing?

  • We are removing the following:
    • The com.tomtom.sdk.routing.online.model.diagnostic.EffectiveSetting class.
    • The com.tomtom.sdk.routing.online.model.diagnostic.Report class.
    • The com.tomtom.sdk.routing.options.description.ReportType class.
  • RouteTrackingState now contains a list of followed and unfollowed routes.
  • RouteTrackingState now contains the hasDeviated method, which indicates whether the user has deviated from all of the routes.
  • RouteTrackingEngine now returns one RouteTrackingState instead of the list.

Announcing breaking changes: October 2, 2023

Maps

What is changing?

  • We are replacing the default enumeration values for com.tomtom.sdk.map.display.camera.RoadClass. The new values are based on the speed limit instead of the type of the road.

We are refactoring the CompositeRegionChangedListener class:

What is changing?

  • We are renaming following APIs:
    • Class CompositeRegionChangedListener to CompositeRegionListener.
    • Method removeCompositeRegionChangedListener to removeCompositeRegionListener.
    • Method addCompositeRegionChangedListener to addCompositeRegionListener.

What do you need to do?

  • Rename usages of the refactored APIs.

We are refactoring the CompletedMapOperation class:

What is changing?

  • We are converting the CompletedMapOperation from a data to a regular class.

What do you need to do?

  • You must stop using component1 and copy methods or provide an implementation for them as they are no longer supported.

What is changing?

  • We are renaming the following:

    • Horizon element City to CityElement.
    • Horizon element CountryInformation to CountryInformationElement.
    • Horizon element DangerousGoodsRestriction to DangerousGoodsRestrictionElement.
    • Horizon element GeneralRoadProperties to GeneralRoadPropertiesElement.
    • Horizon element Hazard to HazardElement.
    • Horizon element Region to RegionElement.
    • Horizon element SafetyLocation to SafetyLocationElement.
    • Horizon element SpeedLimit to SpeedLimitElement.
    • Horizon element Street to StreetElement.
    • Horizon element TrafficSign to TrafficSignElement.
    • Horizon element VehicleRestriction to VehicleRestrictionElement.
    • Horizon element PathGeometry to PathGeometryElement.
    • com.tomtom.sdk.featuretoggle.TomTomMapsPlatformFeature to com.tomtom.sdk.featuretoggle.TomTomOrbisMapFeature.
    • com.tomtom.sdk.navigation.DestinationReachedListener to com.tomtom.sdk.navigation.DestinationArrivalListener.
    • com.tomtom.sdk.navigation.DestinationReachedListener.onDestinationReached(Route) to com.tomtom.sdk.navigation.DestinationArrivalListener.onDestinationArrived(Route).
    • com.tomtom.sdk.navigation.TomTomNavigation.addDestinationReachedListener(DestinationReachedListener) to com.tomtom.sdk.navigation.TomTomNavigation.addDestinationArrivalListener(DestinationArrivalListener).
    • com.tomtom.sdk.navigation.TomTomNavigation.removeDestinationReachedListener(DestinationReachedListener) to com.tomtom.sdk.navigation.TomTomNavigation.removeDestinationArrivalListener(DestinationArrivalListener).
  • We are replacing the following:

    • com.tomtom.sdk.navigation.WaypointArrivalListener.onWaypointReached(RouteStop) with com.tomtom.sdk.navigation.WaypointArrivalListener.onWaypointArrived(RouteStop, Route).
    • com.tomtom.sdk.navigation.WaypointArrivalListener.onWaypointVisited(RouteStop) with com.tomtom.sdk.navigation.WaypointArrivalListener.onWaypointDeparted(RouteStop, Route).

Announcing breaking changes: September 25, 2023

Maps

What is changing?

  • We are refactoring the RouteOptions and RouteSection classes:

    • In the RouteOptions class we are renaming the property destinationMarkerCoordinate to destination.
    • In the RouteOptions class we are adding the property departure.
    • In the RouteOptions class we are renaming the property from followable to isFollowable.
    • In the RouteSection class we are removing the properties start, end, geometry, and routeOffset.
    • We are adding the property indexRange to the RouteSection class.
    • We are converting RouteOptions and RouteSection from data to normal classes.
  • We are refactoring the NdsStoreConfiguration and NdsStoreUpdateConfig:

What is changing?

  • In the upcoming weeks the creation and configuration of NdsStoreConfiguration and NdsStoreUpdateConfig are changing.
  • In the upcoming weeks the NdsStoreUpdateConfig class will gain two new default values in companion object: DEFAULT_LOCAL: Locale and DEFAULT_AUTOMATIC_UPDATES_CONFIGURATION: AutomaticUpdatesConfiguration.

What do you need to do?

  • You must change the way the NdsStoreConfig class is instantiated. The keystorePassword field was removed since the provision of storeAccessPermit: NdsStoreAccessPermit field is mandatory.
  • You must change the way the NdsStoreUpdateConfig class is instantiated. The locale field from NdsStoreConfig was moved into the NdsStoreUpdateConfig class.

How it was

1val ndsStoreConfig = NdsStoreConfiguration(
2 val ndsStorePath: File,
3 val keystorePath: File? = null,
4 keystorePassword = keystorePassword,
5 val ndsStoreUpdateConfig: NdsStoreUpdateConfig,
6 val geopoliticalView: String? = null,
7 val locale: Locale = Locale.getDefault()
8)

How it is now

1val ndsStoreConfig = NdsStoreConfiguration(
2 val ndsStorePath: File,
3 val keystorePath: File? = null,
4 val storeAccessPermit: NdsStoreAccessPermit? = null,
5 val ndsStoreUpdateConfig: NdsStoreUpdateConfig,
6 val geopoliticalView: String? = null
7)

New default values

1NdsStoreUpdateConfig.DEFAULT_LOCAL: Locale = Locale.getDefault()
2NdsStoreUpdateConfig.DEFAULT_AUTOMATIC_UPDATES_CONFIGURATION: AutomaticUpdatesConfiguration = AutomaticUpdatesConfiguration(
3 allRegionsEnabled = false,
4 relevantRegionsEnabled = false,
5 relevantRegionsRadius = Distance.ZERO,
6 relevantRegionsUpdateInterval = Duration.ZERO,
7 regionsAlongRouteEnabled = false,
8 regionsAlongRouteRadius = Distance.ZERO
9 )

We are refactoring the MapOperation class:

What is changing?

  • We are converting the MapOperation from a data to a regular class.
  • The MapOperation class is no longer an internal part of the NdsStore class.
  • We are moving the class from com.tomtom.sdk.datamanagement.nds to com.tomtom.sdk.datamanagement.nds.update package.

What do you need to do?

  • You must change the way the MapOperation class is instantiated. The node property has been renamed to nodeId and the operation property has been renamed to type.
  • You must stop using the component1, component2, and copy methods or provide an implementation for them as they are no longer supported.

We are refactoring the CurrentMapOperation class:

What is changing?

  • We are converting the MapOperation from a data to a regular class.

What do you need to do?

  • You must stop using component1, component2 and copy methods or provide a implementation for them as they are no longer supported.

We are refactoring the UpdateInfo class:

What is changing?

  • We are converting the UpdateInfo from a data to a regular class.

What do you need to do?

  • You must stop using component1, component2, and copy methods or provide an implementation for them as they are no longer supported.

We are refactoring the RegionGraph class:

What is changing?

  • We converted RegionGraph from a data to a regular class.

What do you need to do?

  • You must stop using the component1, component2, and copy methods or provide an implementation for them as they are no longer supported.

Announcing breaking changes: September 18, 2023

General

What is changing?

  • We are changing the type RoadProperties.functionalRoadClass to Int? (Nullable).

Minor changes

  • If the NumberOfLanes value is outside the valid range [0..15], the result is now set as null instead of throwing exceptions.
  • If the RoadProperties.functionalRoadClass value is outside the valid range [0..7], the result is now set as null instead of throwing exceptions.
  • We are removing the default value of numberOfLanes in the constructor of RoadProperties.

Maps

NdsStore API changes

What is changing?

  • In the upcoming weeks the names of some NdsStore API methods are changing.

What do you need to do?

  • NdsStore.addOnAutomaticUpdateFailureListener(listener: AutomaticUpdateFailureListener) should be renamed to NdsStore.addMapAutomaticUpdateFailureListener(listener: AutomaticMapUpdateFailureListener).
  • NdsStore.removeOnAutomaticUpdateFailureListener(listener: AutomaticUpdateFailureListener) should be renamed to NdsStore.removeAutomaticMapUpdateFailureListener(listener: AutomaticMapUpdateFailureListener).
  • NdsStore.addOnUpdateListener(listener: UpdateListener) should be renamed to NdsStore.addMapUpdateListener(listener: MapUpdateListener).
  • NdsStore.removeOnUpdateListener(listener: UpdateListener) should be renamed to NdsStore.removeMapUpdateListener(listener: MapUpdateListener).

What is changing?

  • In the upcoming weeks the name of NdsStore API UpdateErrorCode is changing.

What do you need to do?

  • UpdateErrorCode should be renamed to MapUpdateError.

Routing

What is changing?

  • RouteReplanner methods expect NavigationSnapshot as the only parameter instead of RouteUpdateOptions, BackToRouteOptions, and RouteIncidentOptions.
  • RouteReplanner methods return RouteReplannerResponse instead of RoutePlanningResponse when the result is successful.
  • We are removing BackToRouteOptions from the public API.
  • We are removing RouteUpdateOptions from the public API.

Announcing breaking changes: September 04, 2023

What is changing?

  • We are extending RouteProgress with remainingTrafficDelay.
  • In LocationContext we are changing data class to class and we are removing the Road nested class.
  • We are changing every data class in com.tomtom.sdk.navigation.horizon.elements.HorizonElement.* to class.
  • We are changing every data class in com.tomtom.sdk.navigation.horizon.* to class.

Announcing breaking changes: August 30, 2023

General

What is changing?

  • SDK libraries will no longer support the Maven package manager. Gradle will be required to properly resolve SDK dependencies.

What is changing?

  • We are replacing com.tomtom.sdk.navigation.locationcontext.LocationContext.Road with com.tomtom.sdk.location.road.RoadProperties.
  • We are changing the property com.tomtom.sdk.navigation.locationcontext.LocationContext.road to nullable.
  • We are removing the road related properties in com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.GeneralRoadProperties and replacing it with a property of com.tomtom.sdk.location.road.RoadProperties.
  • We are replacing com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.NumberOfLanes with com.tomtom.sdk.location.road.NumberOfLanes.
  • We are replacing com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.RoadCondition with com.tomtom.sdk.location.road.RoadCondition.

Minor change

  • We are introducing a new class com.tomtom.sdk.location.road.RoadProperties.

Announcing breaking changes: August 21, 2023

Maps

What is changing?

In com.tomtom.sdk.map.display.visualization.navigation:

  • We are removing the fun NavigationVisualization.selectGuidanceType(_:).
  • We are changing the variable type of NavigationVisualization.guidanceType from val to var.

Announcing breaking changes: August 7, 2023

General

Minor changes

  • The Kotlin version used to compile the SDK was upgraded from 1.7.20 to 1.8.22. For consumers of the SDK, this means they will receive a corresponding, higher version of the Kotlin standard library transitively.

Maps

What is changing?

  • Changes in Experimental CameraTrackingMode.
    • We are removing CameraController.followCameraConfig. To set follow camera operator configuration, this API must be used > map.cameraTrackingMode = CameraTrackingMode.FollowRoute(FollowCameraOperatorConfig).

What is changing?

  • Replace LocationTracesParser.fromAssets(String) method with extension function LocationTracesParser.fromAssets(Context, String).
  • We are removing properties speedFog, speedSnow, and speedRain from the horizon API class SpeedLimits (package: com.tomtom.sdk.navigation.horizon.elements.speedlimits )
  • We are removing the value Variable from the horizon API value class SpeedLimitsType (package: com.tomtom.sdk.navigation.horizon.elements.speedlimits )

Announcing breaking changes: August 1, 2023

What is changing?

  • We are replacing com.tomtom.sdk.traffic.DrivingSide and com.tomtom.sdk.navigation.horizon.elements.countryinformation.DrivingSide with com.tomtom.sdk.location.DrivingSide.
  • We are replacing the boolean flags LocationContext.Road.isLeftHandDriving and GeneralRoadProperties.isLeftHandDriving with com.tomtom.sdk.location.DrivingSide.
  • We are replacing LocationContext.Address with com.tomtom.sdk.location.Address.
  • We are renaming LocationContext.Road to LocationContext.RoadProperties.
  • We are re-arranging the order of properties in LocationContext.Road and GeneralRoadProperties.isTunnel and tunnelName will be grouped together, as well as isBridge and bridgeName.
  • In GeneralRoadProperties, numLanesDrivingDirection and numLanesOppositeDirection will be grouped into a new data class numLanes.

Announcing breaking changes: July 25, 2023

Maps

  • AutomaticUpdates refactoring:

What is changing?

In the upcoming weeks the creation and configuration of NdsStoreUpdateConfig is changing.

What do you need to do?

You must change the way NdsStoreUpdateConfig is instantiated. The iqMaps prefix was removed from iqMapsAllRegionsEnabled, iqMapsRelevantRegionsEnabled, iqMapsRelevantRegionsRadius, iqMapsRelevantRegionsUpdateInterval, iqMapsRegionsAlongRouteEnabled, iqMapsRegionsAlongRouteRadius fields and all of them were moved to the AutomaticUpdatesConfiguration class which is an NdsStoreUpdateConfig inner class.

How it was

1val ndsStoreUpdateConfig = NdsStoreUpdateConfig(
2 updateStoragePath = UPDATE_STORAGE_PATH,
3 persistentStoragePath = MAP_UPDATE_PERSISTENCE_PATH,
4 updateServerUri = UPDATE_SERVER_URI,
5 updateServerApiKey = MAP_UPDATE_SERVER_API_KEY,
6 iqMapsAllRegionsEnabled = false,
7 iqMapsRelevantRegionsEnabled = true,
8 iqMapsRelevantRegionsRadius = RELEVANT_REGIONS_RADIUS,
9 iqMapsRelevantRegionsUpdateInterval = IQ_MAPS_RELEVANT_REGIONS_UPDATE_INTERVAL,
10 iqMapsRegionsAlongRouteEnabled = true,
11 iqMapsRegionsAlongRouteRadius = IQ_MAPS_ALONG_ROUTE_RADIUS
12 )

How it is

1val ndsStoreUpdateConfig = NdsStoreUpdateConfig(
2 updateStoragePath = UPDATE_STORAGE_PATH,
3 persistentStoragePath = MAP_UPDATE_PERSISTENCE_PATH,
4 updateServerUri = UPDATE_SERVER_URI,
5 updateServerApiKey = MAP_UPDATE_SERVER_API_KEY,
6 automaticUpdatesConfiguration = NdsStoreUpdateConfig.AutomaticUpdatesConfiguration(
7 allRegionsEnabled = false,
8 relevantRegionsEnabled = true,
9 relevantRegionsRadius = RELEVANT_REGIONS_RADIUS,
10 relevantRegionsUpdateInterval = AUTOMATIC_UPDATES_RELEVANT_REGIONS_UPDATE_INTERVAL,
11 regionsAlongRouteEnabled = true,
12 regionsAlongRouteRadius = AUTOMATIC_UPDATES_ALONG_ROUTE_RADIUS
13 )
14 )

Announcing breaking changes: July 12, 2023

What is changing?

TomTomNavigation refactoring:

  • Starting with version 0.27.0, the creation and configuration of TomTomNavigation is simplified and more flexible. Additionally, the refactoring reduces the size of the SDK for all use cases, particularly for online, offline-only, and hybrid (online/offline) navigation use cases.

What do you need to do?

  • You must change the way TomTomNavigation is instantiated. The following are examples of how you can instantiate for each navigation use case.

Online-only

A new factory is provided in com.tomtom.sdk.navigation.navigation-online that provides sensible defaults for the online navigation use case. All values can be modified as needed, e.g., here is the deviation replanning mode:

1import com.tomtom.sdk.navigation.online.Configuration
2import com.tomtom.sdk.navigation.online.OnlineTomTomNavigationFactory
3
4tomTomNavigation = OnlineTomTomNavigationFactory.create(
5 Configuration(
6 context = this,
7 locationProvider = locationProvider,
8 apiKey = YOUR_API_KEY,
9 routePlanner = routePlanner,
10 deviationReplanningMode = DeviationReplanningMode.None // example customisation
11 )
12)

Alternatively, if the NavigationTileStore is user-created, it can be passed instead of the API key:

1tomTomNavigation = OnlineTomTomNavigationFactory.create(
2 Configuration(
3 context = this,
4 locationProvider = locationProvider,
5 navigationTileStore = navigationTileStore,
6 routePlanner = routePlanner,
7 deviationReplanningMode = DeviationReplanningMode.None // example customisation
8 )
9)

Offline-only

Manual instantiation of DataStoreUpdater is unnecessary. This is done internally. For automatic offline map updates, we still recommend using it for the initial phase where navigation is not yet started. This allows you to download missing map regions. A new factory is provided in com.tomtom.sdk.navigation.navigation-offline that provides sensible defaults for the offline navigation use case. All values can be modified as needed, e.g., here is the deviation replanning mode:

1import com.tomtom.sdk.navigation.offline.Configuration
2import com.tomtom.sdk.navigation.offline.OfflineTomTomNavigationFactory
3
4tomTomNavigation = OfflineTomTomNavigationFactory.create(
5 Configuration(
6 context = this,
7 locationProvider = locationProvider,
8 ndsStore = ndsStore,
9 routePlanner = routePlanner,
10 deviationReplanningMode = DeviationReplanningMode.None // example customisation
11 )
12)

Hybrid

Manual instantiation of DataStoreUpdater is unnecessary. This is done internally. For automatic offline map updates, we still recommend using it for the initial phase where navigation is not yet started. This allows you to download missing map regions. A new factory is provided in com.tomtom.sdk.navigation.navigation-hybrid that offers sensible defaults for the hybrid navigation use case. All values can be modified as needed, e.g., here is the deviation replanning mode:

1import com.tomtom.sdk.navigation.hybrid.Configuration
2import com.tomtom.sdk.navigation.hybrid.HybridTomTomNavigationFactory
3
4tomTomNavigation = HybridTomTomNavigationFactory.create(
5 Configuration(
6 context = this,
7 locationProvider = locationProvider,
8 hybridNavigationDataStore = hybridDataStore,
9 onlineRoutePlanner = onlineRoutePlanner,
10 offlineRoutePlanner = offlineRoutePlanner,
11 deviationReplanningMode = DeviationReplanningMode.None // example customisation
12 )
13)

Offline map updates

Manual instantiation of DataStoreUpdater is unnecessary. This is done internally. For automatic offline map updates, we recommend using it for the initial phase where navigation is not yet started. This allows you to download missing map regions.

Announcing breaking changes: July 4, 2023

What is changing?

  • We are removing StandaloneNavigationOrchestrationFeature and ExperimentalStandaloneNavigationOrchestrationApi; they are now the default mode.

  • We are removing TomTomNavigationFactory and NavigationConfiguration. The new navigation factories (e.g., OnlineTomTomNavigationFactory in navigation-online) should be used instead.

  • We are removing TomTomNavigationFactory.createOnlineNavigation. Instead, use OnlineTomTomNavigationFactory.create().

  • We are renaming the following types:

    • com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.FormOfWayType to com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.FormOfWay
    • com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.RoadConditionType to com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.RoadCondition
  • FormOfWay prefix was removed in the naming of data members in com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.FormOfWay

  • SpeedLimit postfix was removed in the naming of data members in com.tomtom.sdk.navigation.horizon.elements.speedlimits.SpeedLimitsType

Announcing breaking changes: June 26, 2023

General

Minor changes

  • We are promoting the following map management APIs to the public preview stage:
    • CompositeRegionsUpdater
    • CompositeRegionId
    • CompositeRegionGraph
    • CompositeRegion
    • CompositeRegionChangedListener
    • CompositeRegionState
    • CompositeRegionStatesData
    • CompositeRegionOperation
    • CurrentCompositeRegionOperation

What is changing?

  • We are renaming following types:
    • com.tomtom.sdk.navigation.horizon.elements.City to com.tomtom.sdk.navigation.horizon.elements.city.City
    • com.tomtom.sdk.navigation.horizon.elements.CityType to com.tomtom.sdk.navigation.horizon.elements.city.CityElementType
    • com.tomtom.sdk.navigation.horizon.elements.CountryInformation to com.tomtom.sdk.navigation.horizon.elements.countryinformation.CountryInformation
    • com.tomtom.sdk.navigation.horizon.elements.CountryInformationType to com.tomtom.sdk.navigation.horizon.elements.countryinformation.CountryInformationElementType
    • com.tomtom.sdk.navigation.horizon.elements.CountryInformation.DrivingSide to com.tomtom.sdk.navigation.horizon.elements.countryinformation.DrivingSide
    • com.tomtom.sdk.navigation.horizon.elements.RegionalSpeedLimit to com.tomtom.sdk.navigation.horizon.elements.countryinformation.RegionalSpeedLimit
    • com.tomtom.sdk.navigation.horizon.elements.RegionalSpeedLimitType to com.tomtom.sdk.navigation.horizon.elements.countryinformation.RegionalSpeedLimitType
    • com.tomtom.sdk.navigation.horizon.elements.RoadType to com.tomtom.sdk.navigation.horizon.elements.countryinformation.RoadType
    • com.tomtom.sdk.navigation.horizon.elements.DangerousGoodsRestrictionData to com.tomtom.sdk.navigation.horizon.elements.dangerousgoodsrestriction.DangerousGoodsRestrictionData
    • com.tomtom.sdk.navigation.horizon.elements.DangerousGoodsRestrictionType to com.tomtom.sdk.navigation.horizon.elements.dangerousgoodsrestriction.DangerousGoodsRestrictionType
    • com.tomtom.sdk.navigation.horizon.elements.DangerousGoodsRestriction to com.tomtom.sdk.navigation.horizon.elements.dangerousgoodsrestriction.DangerousGoodsRestriction
    • com.tomtom.sdk.navigation.horizon.elements.GeneralRoadElements to com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.GeneralRoadProperties
    • com.tomtom.sdk.navigation.horizon.elements.GeneralRoadElements.FormOfWayType to com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.FormOfWayType
    • com.tomtom.sdk.navigation.horizon.elements.GeneralRoadElements.isRightHandDriving to com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.GeneralRoadProperties.isLeftHandDriving
    • com.tomtom.sdk.navigation.horizon.elements.GeneralRoadElementsType to com.tomtom.sdk.navigation.horizon.elements.generalroadproperties.GeneralRoadPropertiesElementType
    • com.tomtom.sdk.navigation.horizon.elements.PathGeometry to com.tomtom.sdk.navigation.horizon.elements.pathgeometry.PathGeometry
    • com.tomtom.sdk.navigation.horizon.elements.Region to com.tomtom.sdk.navigation.horizon.elements.region.Region
    • com.tomtom.sdk.navigation.horizon.elements.RegionType to com.tomtom.sdk.navigation.horizon.elements.region.RegionElementType
    • com.tomtom.sdk.navigation.horizon.elements.SafetyLocation to com.tomtom.sdk.navigation.horizon.elements.safetylocation.SafetyLocation
    • com.tomtom.sdk.navigation.horizon.elements.SafetyLocationType to com.tomtom.sdk.navigation.horizon.elements.safetylocation.SafetyLocationElementType
    • com.tomtom.sdk.navigation.horizon.elements.SafetyLocationId to com.tomtom.sdk.navigation.horizon.elements.safetylocation.SafetyLocationId
    • com.tomtom.sdk.navigation.horizon.elements.SafetyLocation.Type to com.tomtom.sdk.navigation.horizon.elements.safetylocation.SafetyLocationType
    • com.tomtom.sdk.navigation.horizon.elements.SpeedLimits to com.tomtom.sdk.navigation.horizon.elements.speedlimits.SpeedLimits
    • com.tomtom.sdk.navigation.horizon.elements.SpeedLimitsType to com.tomtom.sdk.navigation.horizon.elements.speedlimits.SpeedLimitsElementType
    • com.tomtom.sdk.navigation.horizon.elements.SpeedLimits.Type to com.tomtom.sdk.navigation.horizon.elements.speedlimits.SpeedLimitsType
    • com.tomtom.sdk.navigation.horizon.elements.Street to com.tomtom.sdk.navigation.horizon.elements.street.Street
    • com.tomtom.sdk.navigation.horizon.elements.StreetType to com.tomtom.sdk.navigation.horizon.elements.street.StreetElementType
    • com.tomtom.sdk.navigation.horizon.elements.TrafficSign to com.tomtom.sdk.navigation.horizon.elements.trafficsign.TrafficSign
    • com.tomtom.sdk.navigation.horizon.elements.TrafficSignCategory to com.tomtom.sdk.navigation.horizon.elements.trafficsign.TrafficSignCategory
    • com.tomtom.sdk.navigation.horizon.elements.TrafficSignType to com.tomtom.sdk.navigation.horizon.elements.trafficsign.TrafficSignElementType
    • com.tomtom.sdk.navigation.horizon.elements.TrafficSignLocation to com.tomtom.sdk.navigation.horizon.elements.trafficsign.TrafficSignLocation
    • com.tomtom.sdk.navigation.horizon.elements.RestrictedVehicleType to com.tomtom.sdk.navigation.horizon.elements.vehiclerestriction.RestrictedVehicleType
    • com.tomtom.sdk.navigation.horizon.elements.VehicleRestriction to com.tomtom.sdk.navigation.horizon.elements.vehiclerestriction.VehicleRestriction
    • com.tomtom.sdk.navigation.horizon.elements.VehicleRestrictionData to com.tomtom.sdk.navigation.horizon.elements.vehiclerestriction.VehicleRestrictionData
    • com.tomtom.sdk.navigation.horizon.elements.VehicleRestrictionType to com.tomtom.sdk.navigation.horizon.elements.vehiclerestriction.VehicleRestrictionElementType
  • We are removing com.tomtom.sdk.navigation.horizon.elements.GeneralRoadElements.AdminRoad.

Announcing breaking changes: June 13, 2023

What is changing?

  • We are removing TomTomNavigationFactory.create(NavigationConfiguration) and replacing it with the factories:
    • OnlineTomTomNavigationFactory.create(Configuration),
    • OfflineTomTomNavigationFactory.create(Configuration), and
    • HybridTomTomNavigationFactory.create(Configuration).

Announcing breaking changes: June 5, 2023

What is changing?

  • In RouteTrackingEngine:
    • We are replacing obtainTrackedRoutes(navigationSnapshot: NavigationSnapshot): List<RouteId> with obtainTrackingStates(navigationSnapshot: NavigationSnapshot): List<RouteTrackingState>.

Announcing breaking changes: May 30, 2023

Search

What is changing?

The CustomRecord class is now providing the position, address, and entry points of a given record using the Place class.

  • The new usage is defined as follows:
1class CustomPoi(
2 val poi: Poi,
3 recordId: String,
4 place: Place
5) : CustomRecord(recordId, place)
  • The earlier usage is as follows:
1class CustomPoi(
2 val poi: Poi,
3 recordId: String,
4 position: GeoPoint,
5 address: Address,
6 entryPoints: List<EntryPoint> = emptyList()
7) : CustomRecord(recordId, position, address, entryPoints)

What is changing?

  • We are renaming the Safety Locations Data Adapter artifact from com.tomtom.sdk.navigation:horizon-data-source-safety-locations to com.tomtom.sdk.navigation:horizon-data-adapter-safety-locations-online.
  • We are renaming SafetyLocationsDataSourceFactory to OnlineSafetyLocationsDataAdapterFactory.
  • We are migrating OnlineSafetyLocationsDataAdapterFactory from com.tomtom.sdk.navigation.horizon.datasource.safetylocations to com.tomtom.sdk.navigation.horizon.datasource.safetylocations.online package.

Announcing breaking changes: May 22, 2023

General

What is changing?

  • In TextToSpeech:
    • We are removing one default constructor that had previously accepted Context and Locale and created a default TTS engine.

Announcing breaking changes: May 15, 2023

Minor change

  • We are reversing the parameter order in the method HorizonSnapshot.distanceTo(HorizonPosition, HorizonElement).

Announcing breaking changes: May 8, 2023

What is changing?

  • We are renaming the Safety Locations Data Source artifact from com.tomtom.sdk.navigation:horizon-data-source-safety-locations to com.tomtom.sdk.navigation:horizon-data-source-safety-locations-online.
  • We are renaming SafetyLocationsDataSourceFactory to OnlineSafetyLocationsDataSourceFactory.
  • We are migrating OnlineSafetyLocationsDataSourceFactory from com.tomtom.sdk.navigation.horizon.datasource.safetylocations to com.tomtom.sdk.navigation.horizon.datasource.safetylocations.online package.
  • We are removing LocationProvider from the NavigationEngineRegistry and are exposing it on the TomTomNavigation interface as the mutable property: TomTomNavigation.locationProvider.

Announcing breaking changes: May 2, 2023

What is changing?

  • We are removing the com.tomtom.sdk.data-store.DataStore interface, and replacing it with the dedicated interfaces LocationDecoderProvider and UpdatableDataStore. This renames NdsStore’s and `NavigationTileStore’s `setPosition() and setActiveRoute() methods to updateActivePosition() and updateActiveRoute().
  • We are removing the locale parameter from the OfflineLocationContextProviderEngine initialization. Now locale is taken from the navigation snapshot.
  • We are removing the locale parameter from the experimental Hybrid- and OnlineLocationContextProviderEngine initializations. Now locale is taken from the navigation snapshot.
  • We are renaming the experimental com.tomtom.sdk.navigation.locationcontext.tilestore.OnlineLocationContextProviderEngine to LocationContextProviderEngineTileStore.
  • We are removing the experimental feature that toggles StandaloneNavigationOrchestrationFeature, ExperimentalNavigationTileStoreFeature, RouteProjectionFeature and ExperimentalRouteProjectionEngineApi. We are moving these features to Public Preview.
  • We are renaming incrementRouteContents to advanceGuidanceProgress in the interface com.tomtom.sdk.navigation.routereplanner.RouteReplanner.

Minor changes

  • We are renaming com.tomtom.sdk.navigation.horizon.MainPathOptions to MainPathSearchOptions.
  • We are renaming com.tomtom.sdk.navigation.horizon.SubPathOptions to SubPathSearchOptions.
  • We are removing the possibility of defining a custom DataType in the horizon data source.
  • We are changing the property type safetyLocationId in com.tomtom.sdk.navigation.horizon.elements.SafetyLocation from a String to a SafetyLocationId inline class.
  • We are changing the property type id in com.tomtom.sdk.navigation.horizon.datasource.SafetyLocationData from String to the SafetyLocationId inline class.

Routing

What is changing?

  • Within com.tomtom.sdk.vehicle:
    • We are renaming the VehicleUpdateOption vehicleType to type, vehicleWeight to weight.
    • We are removing from DefaultVehicleProvider the setVehicle(vehicleType: vehicleParameters:) and setVehicle(vehicleType: modelId: vehicleParameters:); we are adding the alternative method setVehicle(vehicle:).

Announcing breaking changes: April 10, 2023

Routing

  • In RoutePlanner, we are renaming incrementRouteResult to advanceGuidanceProgress.
  • We are removing RouteIncrementResult from the public API.

Announcing breaking changes: April 3, 2023

Maps

Minor changes

  • Added bindings to the onboard-data-source allowing usage of the onboard restrictions.

Routing

Minor changes

  • In DefaultVehicleProvider: we added a new method that supports setting vehicle model id (preparation for long distance EV route support).

Announcing breaking changes: March 20, 2023

General

Minor changes

  • We are renaming the artifact com.tomtom.sdk.location:provider to com.tomtom.sdk.location:provider-api.
  • We are renaming the artifact com.tomtom.sdk:tts-engine to com.tomtom.sdk:tts-engine-api.

Minor changes

  • VehicleProvider now supports the BatteryCharge and ChargingConnectors vehicle parameters.

Announcing breaking changes: March 13, 2023

Minor changes

  • We are adding a new field for charging parameters in the ElectricEngine data class.

Announcing breaking changes: March 6, 2023

Maps

What is changing?

  • We are removing the primitive accessors (markers, circles, polygons, polygonOverlays, polylines) from the TomTomMap class.

Minor changes

  • We are adding:
    • The option of drawing the route section based on the geometry and route offset.
    • Dark theme support for the vehicle restrictions style.

Search

What is changing?

  • In the dynamic-data-client-api we are renaming:
    • chargingAvailabilityId to availabilityId in EvChargingAvailabilityOptions.
    • connectorTypeSet to connectors in EvChargingAvailabilityOptions.
    • connectorType to type in ConnectorAvailability.
    • ChargingConnectorAvailabilityDetails to ConnectorAvailabilityDetails.
    • evChargingStationSearch to requestEVChargingAvailability in EvChargingAvailabilityProvider.

Announcing breaking changes: February 27, 2023

Maps

What is changing?

  • We are removing the LaneLevelSegmentController class.

Search

What is changing?

  • We are removing the geopoliticalView parameter from SearchOptions and ReverseGeocoderOptions. Instead, we are adding it as an ISO 3166-1 alpha-3 country code string to OnlineSearch.create() and OnlineReverseGeocoder.create().
  • We are modifying AutocompleteSegment and making an interface with separate implementations for brand, poi category and plain text.

Routing

What is changing?

  • We are removing ConsumptionModel because it is unused.
  • We are deprecating/removing CoordinatePrecision because it is unused.
  • In Range, we are adding support for different representations for the boundary; we will now have a RangeBoundary interface instead of having a vector of coordinates. It is being implemented by a polygon class.
  • We are removing RangeCalculationOptions from RangeCalculationFailure and RangeCalculationResult to align with route planning.

Announcing breaking changes: February 20, 2023

Maps

What is changing?

  • We are removing the message and messagePhonetics parameters from GuidanceAnnouncement.

What is changing?

  • We are restructuring the LocationContext class to contain the Address and Road classes.

Announcing breaking changes: February 13, 2023

Maps

What is changing?

  • In NdsStoreConfiguration, we are replacing the NDS keystore password string with the class NdsStoreAccessPermit.

Search

What is changing?

  • We are removing the timeout from HybridReverseGeocoder, OnlineReverseGeocoder, and HybridSearch.
  • We are renaming ReverseGeocoder.EntityType to AreaType.
  • We are making customApiUrl optional in com.tomtom.sdk.search.reversegeocoder.online.create() and com.tomtom.sdk.search.reversegeocoder.hybrid.create().
  • We are removing the timeout from OnlineAdditionalDataClient.

What is changing?

  • We are removing the DefaultRouteReplanner and com.tomtom.sdk.navigation:route-replanner-default dependencies.
  • We are introducing OnlineRouteReplannerFactory to initialize the RouteReplanner used for online navigation.
  • We are introducing OfflineRouteReplannerFactory to initialize the RouteReplanner used for offline navigation.
  • We are changing the HybridRouteReplanner.create method to accept only `RoutePlanner`s for online and offline.
  • We are removing the method from OfflineRouteReplannerFactory that internally creates the RoutePlanner.
  • We are removing the method from OnlineRouteReplannerFactory that internally creates the RoutePlanner.
  • We are renaming the following:
    • GuidanceUpdateListener to GuidanceUpdatedListener.
    • TomTomNavigation.addGuidanceUpdateListener method to TomTomNavigation.addGuidanceUpdatedListener.
    • TomTomNavigation.removeGuidanceUpdateListener method to TomTomNavigation.removeGuidanceUpdatedListener.

Announcing breaking changes: February 6, 2023

Maps

What is changing?

  • We are replacing com.tomtom.sdk.map.display.map.ResourceCachePolicy with com.tomtom.sdk.map.display.map.OnlineCachePolicy.
  • We are removing durationFilter from com.tomtom.sdk.map.display.map.OnlineCachePolicy.

Minor change

  • We are updating the style version to 24.0.x.

Search

What is changing?

  • We are removing com.tomtom.sdk.search.dynamicdata.model.fuelprice.FuelName We are extending the use of com.tomtom.sdk.search.model.fuel.FuelType for fuel prices within the dynamic POI data.
  • We are removing geopoliticalView from com.tomtom.sdk.search.SearchOptions.
  • We are using geopoliticalView for construction of com.tomtom.sdk.search.online.OnlineSearch, com.tomtom.sdk.search.offline.OfflineSearch and com.tomtom.sdk.search.hybrid.HybridSearch.
  • maxDetourDuration in SearchOptions is now an optional param that is pre-defined to one hour (for search along route requests).
  • We are moving entryPoints from Poi to Place.
  • We are removing navigablePosition from PlaceMatch in the reversegeocoder and replacing it with entryPoints in Place.

What is changing?

  • We are moving TollgatePaymentType from the com.tomtom.sdk.routing.route.instruction.common package to com.tomtom.sdk.routing.route.
  • We are adding support for manual announcements.

Announcing breaking changes: January 30, 2023

Maps

What is changing?

  • We are changing the com.tomtom.sdk.map.display.location.LocationMarker.LocationMarkerParams customModel property type from String to Uri.

Routing

What is changing?

  • We are removing Engine Type from Combustion Engine and Electric Engine.
  • We are converting the hazmat enum to a value type. We are changing the prefix from Us to Un.
  • We are changing the RoutingFailure signature from open class RoutingFailure constructor(override val message: String) : RuntimeException(message) to abstract class RoutingFailure private constructor(val message: String).

Announcing breaking changes: January 23, 2023

Maps

What is changing?

Minor changes

  • We are fixing the move gesture inertia sensitivity, now it will be smaller especially on devices with a low DPI.
  • We are fixing the quick scale gesture, now scaling will be linear.
  • We are improving the rotation inertia calculation, in general, rotation inertia should be more substantial.
  • We are marking all public APIs in the gesture-detectors module as @InternalTomTomSdkApi.

Search

What is changing?

  • PoiDetailsOptions will use PoiId instead of SearchResultId.
  • PoiDetailsResponse will return PoiDetails instead of SearchResult.
  • We are removing the numResults property from all classes ending with Summary.
  • We are removing the offset property from SearchRequestSummary.
  • We are renaming the following:
    • inputQuery to query in AutocompleteSummary.
    • category to poiCategory in AutocompleteSegment and PoiCategoryResponse.
    • sortBy to sortOrder. At the same time, we are adding a "by" prefix to its enums, e.g., byDetourTime.
    • Category to PoiCategory
    • ResultType to SearchResultType
    • SearchRequestSummary to SearchSummary

What is changing?

  • We are moving the public interfaces of the navigation engines to a new module named navigation:navigation-engines.
  • We are renaming ItineraryPointSide to ItineraryPointRelativePosition.
  • We are adding validation for tollgateName and paymentTypes in TollgateInstruction to ensure that at least one value is specified.
  • We are removing the keepLeft and keepRight values from TurnDirection.

Announcing breaking changes: January 16, 2023

Search

What is changing?

  • We are renaming the value class from GeoPoliticalView to GeopoliticalView in SearchOptions.

What is changing?

  • We are renaming:
    • CountryInfo to Country.
    • RoadInformation to Road.
  • In Instruction.routePath we are replacing RoutePoint with InstructionPoint.
  • We are removing the travelTime property from Instruction.
  • We are adding validation in BorderCrossing to ensure that the from and to countries are not the same country.

Announcing breaking changes: January 9, 2023

Search

What is changing?

  • In the reverse geocoder:
    • We are changing the type of ReverseGeocoderOptions.heading from Float to com.tomtom.quantity.Angle.
    • We are renaming geometryType in GeoGeometry to type.
    • We are reusing com.tomtom.sdk.geojson.geometry.Geometry instead of defining a GeoGeometry type in the reverse geocoder module.
    • We are changing the type of a speed limit in PlaceMatch to com.tomtom.kotlin.quantity.Speed.
    • We are renaming the reverseGeocoderOptions parameter to options in functions from the ReverseGeocoder interface.
    • We are removing map code from the reverse geocoder.
    • We are renaming ReverseGeocoderOptions.geoPoliticalView to geopoliticalView.

Minor changes

  • In the reverse geocoder:
    • The ReverseGeocoderOptions.geopoliticalView property is initialized to null.

Routing

What is changing?

  • We are renaming RoutingErrors to RoutingFailures and are reorganizing the RoutingFailure packages.

Announcing breaking changes: January 2, 2023

General

What is changing?

  • We are marking Either monad as internal API.
  • We are marking com.tomtom.sdk.common.httpframeworkNavigationHttpInterceptor as internal API.
  • We are marking com.tomtom.sdk.common.httpframework.RequestObserver as internal API.
  • We are marking com.tomtom.sdk.common.httpframework.ResponseData as internal API.

What is changing?

  • We are renaming:
    • NavigationError to NavigationFailure and convert to an abstract class.
    • NavigationStartError to NavigationFailure.NavigationStartFailure.
    • RouteUpdateError to NavigationFailure.RouteUpdateError.
    • OnNavigationErrorListener to NavigationFailureListener.
    • TomTomNavigation.addOnNavigationErrorListener to TomTomNavigation.addNavigationFailureListener and TomTomNavigation.removeOnNavigationErrorListener to TomTomNavigation.removeNavigationFailureListener.
    • OnDestinationReachedListener to DestinationReachedListener.
    • TomTomNavigation.addOnDestinationReachedListener to TomTomNavigation.addDestinationReachedListener and TomTomNavigation.removeOnDestinationReachedListener to TomTomNavigation.removeDestinationReachedListener.
    • OnGuidanceUpdateListener to GuidanceUpdateListener.
    • TomTomNavigation.addOnGuidanceUpdateListener to TomTomNavigation.addGuidanceUpdateListener and TomTomNavigation.removeOnGuidanceUpdateListener to TomTomNavigation.removeGuidanceUpdateListener.
    • OnHorizonUpdatedListener to HorizonUpdatedListener.
    • TomTomNavigation.addOnHorizonUpdateListener to TomTomNavigation.addHorizonUpdatedListener and TomTomNavigation.removeOnHorizonUpdateListener to TomTomNavigation.removeHorizonUpdatedListener.
    • OnLaneGuidanceUpdateListener to LaneGuidanceUpdatedListener.
    • TomTomNavigation.addOnLaneGuidanceUpdatedListener to TomTomNavigation.addLaneGuidanceUpdatedListener and TomTomNavigation.removeOnLaneGuidanceUpdatedListener to TomTomNavigation.removeLaneGuidanceUpdatedListener.
    • OnLanguageChangedListener to LanguageChangedListener.
    • TomTomNavigation.addOnLanguageChangedListener to TomTomNavigation.addLanguageChangedListener and TomTomNavigation.removeOnLanguageChangedListener to TomTomNavigation.removeLanguageChangedListener.
    • OnLocationContextUpdateListener to LocationContextUpdatedListener.
    • TomTomNavigation.addOnLocationContextUpdateListener to TomTomNavigation.addLocationContextUpdatedListener and TomTomNavigation.removeOnLocationContextUpdateListener to TomTomNavigation.removeLocationContextUpdatedListener.
    • OnLocationMapMatchedListener to LocationMapMatchedListener.
    • TomTomNavigation.addOnLocationMapMatchedListener to TomTomNavigation.addLocationMapMatchedListener and TomTomNavigation.removeOnLocationMapMatchedListener to TomTomNavigation.removeLocationMapMatchedListener.
    • OnNavigationStartedListener to NavigationStartedListener.
    • TomTomNavigation.addOnNavigationStartedListener to TomTomNavigation.addNavigationStartedListener and TomTomNavigation.removeOnNavigationStartedListener to TomTomNavigation.removeNavigationStartedListener.
    • OnProgressUpdateListener to ProgressUpdatedListener.
    • TomTomNavigation.addOnProgressUpdateListener to TomTomNavigation.addProgressUpdatedListener and TomTomNavigation.removeOnProgressUpdateListener to TomTomNavigation.removeProgressUpdatedListener.
    • OnReplannedRouteProposedListener to ReplannedRouteProposedListener.
    • TomTomNavigation.addOnReplannedRouteProposedListener to TomTomNavigation.addReplannedRouteProposedListener and TomTomNavigation.removeOnReplannedRouteProposedListener to TomTomNavigation.removeReplannedRouteProposedListener.
    • OnRouteDeviationListener to RouteDeviationListener.
    • TomTomNavigation.addOnRouteDeviationListener to TomTomNavigation.addRouteDeviationListener and TomTomNavigation.removeOnRouteDeviationListener to TomTomNavigation.removeRouteDeviationListener.
    • RouteDeviationListener.onRouteDeviated to RouteDeviationListener.onRouteDeviation.
    • OnRouteUpdatedListener to RouteUpdatedListener.
    • TomTomNavigation.addOnRouteUpdatedListener to TomTomNavigation.addRouteUpdatedListener and TomTomNavigation.removeOnRouteUpdatedListener to TomTomNavigation.removeRouteUpdatedListener.
    • OnWaypointVisitedListener to WaypointVisitedListener.
    • TomTomNavigation.addOnWaypointVisitedListener to TomTomNavigation.addWaypointVisitedListener and TomTomNavigation.removeOnWaypointVisitedListener to TomTomNavigation.removeWaypointVisitedListener.
    • OnRoutesChangedListener to RoutesChangedListener.
    • TomTomNavigation.addOnRoutesChangedListener to TomTomNavigation.addRoutesChangedListener and TomTomNavigation.removeOnRoutesChangedListener to TomTomNavigation.removeRoutesChangedListener.
    • OnGuidanceViewBoundariesChangeListener to GuidanceViewBoundariesChangeListener.

Announcing breaking changes: December 27, 2022

General

What is changing?

  • We are renaming com.tomtom.sdk.common.Callback::onError to com.tomtom.sdk.common.Callback::onFailure

Maps

What is changing?

  • We are remodeling InvalidPointException to PointConversionFailure.
  • We are changing MapController.visibleRegion property to a method.
  • We are remodeling InvalidRegionException to RegionCalculationFailure.
  • We are converting:
    • CameraTrackingMode to the "value class".
    • GestureType to the "value class".
    • CapType to the "value class".
    • LocationMarkerOptions.Type to the "value class".
    • UnitSystem to the "value class".
    • LocationMarkerOptions.Type to the "value class".
    • Magnitude to the "value class".
    • PoiType to the "value class".
    • RoadType to the "value class".
    • ProbabilityOfOccurrence to the "value class".
    • RoadCoverage to the "value class".
  • We are renaming:
    • com.tomtom.sdk.map.gesture.OnScaleGestureListener > com.tomtom.sdk.map.gesture.ScaleGestureListener
    • com.tomtom.sdk.map.gesture.OnDoubleTapListener > com.tomtom.sdk.map.gesture.DoubleTapListener
    • com.tomtom.sdk.map.display.ui.currentlocation.CurrentLocationButton.removeOnCurrentLocationButtonClickListener() > com.tomtom.sdk.map.display.ui.currentlocation.CurrentLocationButton.removeCurrentLocationButtonClickListener()
    • com.tomtom.sdk.map.display.ui.currentlocation.CurrentLocationButton.addOnCurrentLocationButtonClickListener() > com.tomtom.sdk.map.display.ui.currentlocation.CurrentLocationButton.addCurrentLocationButtonClickListener()
    • com.tomtom.sdk.map.display.ui.compass.CompassButton.removeOnCompassButtonClickListener() > com.tomtom.sdk.map.display.ui.compass.CompassButton.removeCompassButtonClickListener()
    • com.tomtom.sdk.map.display.ui.compass.CompassButton.addOnCompassButtonClickListener() > com.tomtom.sdk.map.display.ui.compass.CompassButton.addCompassButtonClickListener()
    • com.tomtom.sdk.map.display.ui.OnUiComponentClickListener > com.tomtom.sdk.map.display.ui.UiComponentClickListener
    • com.tomtom.sdk.map.display.ui.OnMapReadyCallback > com.tomtom.sdk.map.display.ui.MapReadyCallback
    • com.tomtom.sdk.map.display.traffic.TrafficController.removeOnTrafficIncidentClickListener() > com.tomtom.sdk.map.display.traffic.TrafficController.removeTrafficIncidentClickListener()
    • com.tomtom.sdk.map.display.traffic.TrafficController.addOnTrafficIncidentClickListener() > com.tomtom.sdk.map.display.traffic.TrafficController.addTrafficIncidentClickListener()
    • com.tomtom.sdk.map.display.traffic.OnTrafficIncidentClickListener > com.tomtom.sdk.map.display.traffic.TrafficIncidentClickListener
    • com.tomtom.sdk.map.display.route.RouteController.removeOnRouteClickListener() > com.tomtom.sdk.map.display.route.RouteController.removeRouteClickListener()
    • com.tomtom.sdk.map.display.route.RouteController.addOnRouteClickListener() > com.tomtom.sdk.map.display.route.RouteController.addRouteClickListener()
    • com.tomtom.sdk.map.display.route.OnRouteClickListener > com.tomtom.sdk.map.display.route.RouteClickListener
    • com.tomtom.sdk.map.display.polyline.PolylineController.removeOnPolylineClickListener() > com.tomtom.sdk.map.display.polyline.PolylineController.removePolylineClickListener()
    • com.tomtom.sdk.map.display.polyline.PolylineController.addOnPolylineClickListener() > com.tomtom.sdk.map.display.polyline.PolylineController.addPolylineClickListener()
    • com.tomtom.sdk.map.display.polyline.OnPolylineClickListener > com.tomtom.sdk.map.display.polyline.PolylineClickListener
    • com.tomtom.sdk.map.display.polygon.PolygonController.removeOnPolygonClickListener() > com.tomtom.sdk.map.display.polygon.PolygonController.removePolygonClickListener()
    • com.tomtom.sdk.map.display.polygon.PolygonController.addOnPolygonClickListener() > com.tomtom.sdk.map.display.polygon.PolygonController.addPolygonClickListener()
    • com.tomtom.sdk.map.display.polygon.OnPolygonClickListener > com.tomtom.sdk.map.display.polygon.PolygonClickListener
    • com.tomtom.sdk.map.display.location.LocationController.removeOnLocationMarkerClickListener() > com.tomtom.sdk.map.display.location.LocationController.removeLocationMarkerClickListener()
    • com.tomtom.sdk.map.display.location.LocationController.addOnLocationMarkerClickListener() > com.tomtom.sdk.map.display.location.LocationController.addLocationMarkerClickListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.removeOnMapPanningListener() > `com.tomtom.sdk.map.display.gesture.GesturesController.removeMapPanningListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.addOnMapPanningListener() > com.tomtom.sdk.map.display.gesture.GesturesController.addMapPanningListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.removeOnMapLongClickListener() > com.tomtom.sdk.map.display.gesture.GesturesController.removeMapLongClickListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.addOnMapLongClickListener() > com.tomtom.sdk.map.display.gesture.GesturesController.addMapLongClickListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.removeOnMapDoubleClickListener() > com.tomtom.sdk.map.display.gesture.GesturesController.removeMapDoubleClickListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.addOnMapDoubleClickListener() > com.tomtom.sdk.map.display.gesture.GesturesController.addMapDoubleClickListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.removeOnMapClickListener() > com.tomtom.sdk.map.display.gesture.GesturesController.removeMapClickListener()
    • com.tomtom.sdk.map.display.gesture.GesturesController.addOnMapClickListener() > com.tomtom.sdk.map.display.gesture.GesturesController.addMapClickListener()
    • com.tomtom.sdk.map.display.camera.CameraController.removeOnCameraSteadyListener() > com.tomtom.sdk.map.display.camera.CameraController.removeCameraSteadyListener()
    • com.tomtom.sdk.map.display.camera.CameraController.addOnCameraSteadyListener() > com.tomtom.sdk.map.display.camera.CameraController.addCameraSteadyListener()
    • com.tomtom.sdk.map.display.camera.CameraController.removeOnCameraChangeListener() > com.tomtom.sdk.map.display.camera.CameraController.removeCameraChangeListener()
    • com.tomtom.sdk.map.display.camera.CameraController.addOnCameraChangeListener() > com.tomtom.sdk.map.display.camera.CameraController.addCameraChangeListener()
    • com.tomtom.sdk.map.display.circle.removeOnCircleClickListener() > com.tomtom.sdk.map.display.circle.removeCircleClickListener()
    • com.tomtom.sdk.map.display.circle.addOnCircleClickListener() > com.tomtom.sdk.map.display.circle.addCircleClickListener()
    • com.tomtom.sdk.map.display.marker.MarkerController.removeOnMarkerSelectedListener() > com.tomtom.sdk.map.display.marker.MarkerController.removeMarkerSelectionListener()
    • com.tomtom.sdk.map.display.marker.MarkerController.addOnMarkerSelectedListener() > com.tomtom.sdk.map.display.marker.MarkerController.addMarkerSelectionListener()
    • com.tomtom.sdk.map.display.marker.MarkerController.removeOnMarkerLongClickListener() > com.tomtom.sdk.map.display.marker.MarkerController.removeMarkerLongClickListener()
    • com.tomtom.sdk.map.display.marker.MarkerController.addOnMarkerLongClickListener() > com.tomtom.sdk.map.display.marker.MarkerController.addMarkerLongClickListener()
    • com.tomtom.sdk.map.display.marker.MarkerController.removeOnMarkerClickListener() > com.tomtom.sdk.map.display.marker.MarkerController.removeMarkerClickListener()
    • com.tomtom.sdk.map.display.marker.MarkerController.addOnMarkerClickListener() > com.tomtom.sdk.map.display.marker.MarkerController.addMarkerClickListener()
    • com.tomtom.sdk.map.display.marker.OnMarkerSelectedListener > com.tomtom.sdk.map.display.marker.MarkerSelectionListener
    • com.tomtom.sdk.map.display.marker.OnMarkerLongClickListener > com.tomtom.sdk.map.display.marker.MarkerLongClickListener
    • com.tomtom.sdk.map.display.marker.OnMarkerClickListener > com.tomtom.sdk.map.display.marker.MarkerClickListener
    • com.tomtom.sdk.map.display.location.OnLocationMarkerClickListener > com.tomtom.sdk.map.display.location.LocationMarkerClickListener
    • com.tomtom.sdk.map.display.gesture.OnMapPanningListener > com.tomtom.sdk.map.display.gesture.MapPanningListener
    • com.tomtom.sdk.map.display.gesture.OnMapLongClickListener > com.tomtom.sdk.map.display.gesture.MapLongClickListener
    • com.tomtom.sdk.map.display.gesture.OnMapDoubleClickListener > com.tomtom.sdk.map.display.gesture.MapDoubleClickListener
    • com.tomtom.sdk.map.display.gesture.OnMapClickListener > com.tomtom.sdk.map.display.gesture.MapClickListener
    • com.tomtom.sdk.map.display.copyright.OnCopyrightsFetchedCallback > com.tomtom.sdk.map.display.copyright.CopyrightsFetchingCallback
    • com.tomtom.sdk.map.display.common.OnCancellableActionCallback > com.tomtom.sdk.map.display.camera.AnimateCameraCallback
    • com.tomtom.sdk.map.display.circle.OnCircleClickListener > com.tomtom.sdk.map.display.circle.CircleClickListener
    • com.tomtom.sdk.map.display.camera.OnCameraChangeListener > com.tomtom.sdk.map.display.camera.CameraChangeListener
    • com.tomtom.sdk.map.display.camera.OnCameraSteadyListener > com.tomtom.sdk.map.display.camera.CameraSteadyListener
    • com.tomtom.sdk.map.display.style.OnStyleLoadedCallback > com.tomtom.sdk.map.display.style.StyleLoadingCallback

Minor changes

  • We are adding sections to RouteOptions. (The geometry stays as it is without any changes).

Search

What is changing?

  • We are making reverse geocoder use locale instead of IETF language tag in ReverseGeocoderOptions.

Routing

What is changing?

  • We are renaming com.tomtom.sdk.routing.common.options to com.tomtom.sdk.routing.options, also moved from routing:common to routing:model module
  • We are renaming com.tomtom.sdk.routing.common.range to com.tomtom.sdk.routing.range, also moved from routing:common to routing:model module
  • We are renaming RoutePlanningResult to RoutePlanningResponse
  • We are moving com.tomtom.sdk.routing.common.Error to com.tomtom.sdk.routing.error, also moved from routing:common to routing:model module

What is changing?

  • We are introducing EngineRegistry for engines access in NavigationController and bulk update. We are removing engines properties from NavigationController.

Announcing breaking changes: December 19, 2022

General

What is changing?

  • We are remodelling error types across the whole GOSDK to make them more consistent.
  • We are renaming com.tomtom.sdk.map.display.diagnostics events from Error to Failure.
  • We are changing the package:
    • com.tomtom.sdk.common.ev to com.tomtom.sdk.vehicle

Maps

What is changing?

  • We are moving TileCacheRouteProjectionEngineOptions and OfflineRouteProjectionEngineOptions to RouteProjectionEngineOptions and moving into the navigation:navigation SDK module.
  • We are renaming InvalidListenerError > InvalidListenerException.
  • We are renaming MapIsNotAccessibleError > MapIsNotAccessibleFailure.
  • We are renaming NdsStoreError > NdsStoreFailure.
  • We are composing `[Circle|CircleOptions].radius and [Circle|CircleOptions].radiusUnit into a single object.
  • We are changing enum value from RadiusUnit.PIXEL_DENSITY to RadiusUnit.DENSITY_PIXEL.
  • We are using platform java.util.Locale for setting language MapController.setLanguage(locale).
  • We are remodeling StyleLoadingFailure into a restricted class hierarchy.
  • We are renaming OnStyleLoadedCallback.onError > OnStyleLoadedCallback.onFailure.
  • We are replacing geometry in RouteOptions and Route with segments.

Search

What is changing?

  • We are removing ReverseGeocoderError and replacing it with SearchError.
  • We are renaming styles with basic in the name to use base instead.
    • BasicLogoView > BaseLogoView (previously BasicLogoView)
    • BasicCompassButton > BaseCompassButton
    • BasicCurrentLocationButton > BaseCurrentLocationButton
    • BasicScaleView > BaseScaleView ** BasicScaleTextView > BaseScaleTextView
  • We are removing evChargingStationSearch methods from Search.kt. They will remain in EvChargingAvailabilityProvider.kt.
  • We are removing OfflineUnsupportedError.
  • We are modifying enum with value class for EntityType and SpreadingMode.
  • We are removing the following classes, they should not have been used, as we do not support related POIs in response or search options.
    • RelatedPoi
    • RequestedPoiRelationType
    • PoiRelationType

What is changing?

  • The RoadInformation must now have at least roadName, roadNumbers, or roadTypes set.
  • We are adding a language parameter to TaggedMessage.
  • We are changing GuidanceEngine.availableLanguages type to a List of Locales.
  • We are renaming RouteCoordinate to RoutePoint.
  • We are renaming Route.routeCoordinates property to Route.routePoints.
  • We are renaming NavigationHistorySnapshot.visitedRouteCoordinates property to NavigationHistorySnapshot.visitedRoutePoints.

Announcing breaking changes: December 12, 2022

General

What is changing?

  • We are making the units in the Quantity package plural (e.g., METER > Meters).
  • We are removing the toString function in the Quantity package from units and replaced with format.
  • We are converting enums in the Quantity package to value classes or abstract classes.

Maps

What is changing?

  • We are converting cameraTrackingMode and cameraPosition to properties instead of functions in the CameraController interface.
  • We are removing com.tomtom.sdk.map.display.common.Color in favor of using Integer with @ColorInt annotation.
  • We are changing Marker.tag type from Any? to String?.

Minor changes

  • We are adding a method to remove elements by tag to CircleController , MarkerController , PolygonController and PolylineController.

What is changing?

  • We are renaming AutocompleteSearchResponse to AutocompleteResponse.
  • We are renaming AutocompleteSearchOptions to AutocompleteOptions.
  • We are renaming AutocompleteSearchResponse to AutocompleteResponse.
  • We are changing navigation language to be reflected in guidance announcements.
  • We are introducing OnNavigationLanguageChangedListener to signal change of navigation language.
  • The TTS language in the Navigation UI will change at the same time when the navigation language is changed.
  • We are making the point property required in Announcement.

Announcing breaking changes: December 5, 2022

Maps

What is changing?

  • We are replacing com.tomtom.sdk.map.display.camera.AnimationDuration with kotlin.time.Duration

Search

Minor changes

  • Introduction of a factory for creating instances of FuelPriceProvider, EvChargingAvailabilityProvider, and ParkingDetailProvider. We are removing OnlineFuelPriceProvider, OnlineEvChargingAvailabilityProvider and OnlineParkingDetailProvider from the public API. NOTE: these APIs will still be experimental. The interface implementations for dynamic data should be instantiated in the following way:
1 parkingDetailProvider = OnlineDynamicDataProviderFactory.createParkingDetailProvider(context, "YOUR_API_KEY")
2 fuelPriceProvider = OnlineDynamicDataProviderFactory.createFuelPriceProvider(context, "YOUR_API_KEY")
3 evChargingAvailabilityProvider = OnlineDynamicDataProviderFactory.createEvChargingAvailabilityProvider(context, "YOUR_API_KEY")
  • sessionId in SearchOptions and AutocompleteOptions changing to java.util.UUID instead of String.
  • We are replacing CircleGeometry::radiusInMeters with CircleGeometry::radius (type is changing from Int to Distance).
  • ReverseGeocoderOptions::radiusInMeters will be replaced with ReverseGeocoderOptions::radius (type is changing from Int to Distance).

Routing

What is changing?

  • Making AlternativeRouteOptions.maxAlternatives non-optional.

What is changing?

  • Reordering instruction params to group defaulted params at the end of the constructor.

Announcing breaking changes: November 28, 2022

General

What is changing?

  • Changing the package for ViewBoundaries from com.tomtom.sdk.common.ui to com.tomtom.sdk.common.android.ui.

Maps

What is changing?

  • Replacing Disposable with AutoCloseable.

Search

What is changing?

  • Replacing the EV Charging Stations Availability API from Search and HybridSearch modules with the EV Charging Stations Availability API from the DynamicData module.
  • Unifying Search and Search Along the Route.
  • Removing the offset parameter from SearchOptions.
  • Removing the fuzzyLevel parameter from SearchOptions.

Announcing breaking changes: November 21, 2022

General

What is changing?

  • Replacing java.net.URI with android.net.URI
    • Removing Uris.toUri(): URI
    • Uris.getUri(index: Int): URI > Uris.getUri(index: Int): Uri
    • CacheConfig.clearCache(uri: URI) > CacheConfig.clearCache(uri: Uri)
    • CacheConfig.loadBytesFromUri(uri: URI) > CacheConfig.loadBytesFromUri(uri: Uri)
    • CacheConfig.loadFileFromUri(uri: URI) > CacheConfig.loadFileFromUri(uri: Uri)
    • CacheConfig.loadStringFromUri(uri: URI) > CacheConfig.loadStringFromUri(uri: Uri)

Maps

What is changing?

  • Replacing java.net.URI with android.net.URI
    • DataProvider.canHandle(uri: URI) > DataProvider.canHandle(uri: Uri)
    • DataProvider.requestResource(uri: URI, allowCaching:boolean, listener:DataProviderListener) > DataProvider.requestResource(uri: Uri, allowCaching:boolean, listener:DataProviderListener)
    • DataProvider.canHandle(uri: URI) > DataProvider.canHandle(uri: Uri)
    • DataProvider.requestResource(uri: URI, allowCaching: Boolean, listener: DataProviderListener) > requestResource(uri: Uri, allowCaching: Boolean, listener: DataProviderListener)
    • StyleUriProvider.ONBOARD_BROWSING_LIGHT: URI > StyleUriProvider.ONBOARD_BROWSING_LIGHT: Uri
    • StyleUriProvider.ONBOARD_BROWSING_DARK: URI > StyleUriProvider.ONBOARD_BROWSING_DARK: Uri
    • StyleUriProvider.ONBOARD_DRIVING_LIGHT: URI > StyleUriProvider.ONBOARD_DRIVING_LIGHT: Uri ** StyleUriProvider.ONBOARD_DRIVING_DARK: URI > StyleUriProvider.ONBOARD_DRIVING_DARK: Uri
    • StyleUriProvider.ONBOARD_LAYER_MAPPING: URI > StyleUriProvider.ONBOARD_LAYER_MAPPING: Uri

Routing

What is changing?

  • Converting route stop source type to enum class

Announcing changes to SDK artifacts: November 17, 2022

When is it expected?

Expected rollout date: November 21, 2022

What is changing?

With the upcoming release, we will rename some Android artifacts and group IDs to comply with the SDK-wide naming scheme. Historical artifacts remain available in the Artifactory. However, all new SDK development will be published under the updated artifact names.

What do you need to do?

If you want to be able to use the newest SDKs, you will need to remove all old dependencies used in your application module’s build.gradle file and add matching entries with the updated names. We will communicate in the Release Notes the exact list of renamed artifacts.

Announcing breaking changes: November 14, 2022

General

What is changing?

  • We are renaming the following packages:
    • com.tomtom.sdk.navigation.matching > com.tomtom.sdk.navigation.mapmatching
    • com.tomtom.sdk.navigation.matching.hybrid > com.tomtom.sdk.navigation.mapmatching.hybrid
    • com.tomtom.sdk.navigation.matching.onboard > com.tomtom.sdk.navigation.mapmatching.offline
    • com.tomtom.sdk.navigation.matching.online > com.tomtom.sdk.navigation.mapmatching.tilecache
    • com.tomtom.sdk.navigation.routereplanning.online > com.tomtom.sdk.navigation.routereplanning
    • com.tomtom.sdk.navigation.vehiclehorizon > com.tomtom.sdk.navigation.horizon
    • com.tomtom.sdk.navigation.vehiclehorizon > com.tomtom.sdk.navigation.horizon.attributes
    • com.tomtom.sdk.navigation.locationcontext > com.tomtom.sdk.navigation.locationcontext.common
    • com.tomtom.sdk.navigation.locationcontext.onboard > com.tomtom.sdk.navigation.locationcontext.offline
    • com.tomtom.sdk.navigation.locationcontext.online > com.tomtom.sdk.navigation.locationcontext.tilestore
    • com.tomtom.sdk.navigation.projection > com.tomtom.sdk.routing.routeprojection.common
    • com.tomtom.sdk.navigation.projection.online > com.tomtom.sdk.navigation.routeprojection.tilestore
    • com.tomtom.sdk.range > com.tomtom.sdk.routing.range
    • com.tomtom.sdk.range.offline > com.tomtom.sdk.routing.range.offline
    • com.tomtom.sdk.range.online > com.tomtom.sdk.routing.range.online
  • Replacing java.net.URI with android.net.URI
    • Removing Uris.toUri(): URI
    • Uris.getUri(index: Int): URI > Uris.getUri(index: Int): Uri
    • CacheConfig.clearCache(uri: URI) > CacheConfig.clearCache(uri: Uri)
    • CacheConfig.loadBytesFromUri(uri: URI) > CacheConfig.loadBytesFromUri(uri: Uri)
    • CacheConfig.loadFileFromUri(uri: URI) > CacheConfig.loadFileFromUri(uri: Uri)
    • CacheConfig.loadStringFromUri(uri: URI) > CacheConfig.loadStringFromUri(uri: Uri)

Maps

What is changing?

  • Replacing java.net.URI with android.net.URI
    • DataProvider.canHandle(uri: URI) > DataProvider.canHandle(uri: Uri)
    • DataProvider.requestResource(uri: URI, allowCaching:boolean, listener:DataProviderListener) > DataProvider.requestResource(uri: Uri, allowCaching:boolean, listener:DataProviderListener)
    • DataProvider.canHandle(uri: URI) > DataProvider.canHandle(uri: Uri)
    • DataProvider.requestResource(uri: URI, allowCaching: Boolean, listener: DataProviderListener) > requestResource(uri: Uri, allowCaching: Boolean, listener: DataProviderListener)
    • StyleUriProvider.ONBOARD_BROWSING_LIGHT: URI > StyleUriProvider.ONBOARD_BROWSING_LIGHT: Uri
    • StyleUriProvider.ONBOARD_BROWSING_DARK: URI > StyleUriProvider.ONBOARD_BROWSING_DARK: Uri
    • StyleUriProvider.ONBOARD_DRIVING_LIGHT: URI > StyleUriProvider.ONBOARD_DRIVING_LIGHT: Uri
    • StyleUriProvider.ONBOARD_DRIVING_DARK: URI > StyleUriProvider.ONBOARD_DRIVING_DARK: Uri
    • StyleUriProvider.ONBOARD_LAYER_MAPPING: URI > StyleUriProvider.ONBOARD_LAYER_MAPPING: Uri

Search

What is changing?

  • Renaming the following interfaces:
    • ReverseGeocoderApi > ReverseGeocoder
    • SearchApi > Search
    • StructuredSearchApi > StructuredSearch
    • ChargingStationAvailability > EvChargingAvailabilityProvider
    • FuelPriceApi > FuelPriceProvider
    • ParkingDetailsApi > ParkingDetailsProvider
  • Renaming the following implementations of ReverseGeocoderApi:
    • OnboardReverseGeocoderApi > OfflineReverseGeocoder
    • OnlineReverseGeocoderApi > OnlineReverseGeocoder
    • HybridReverseGeocoderApi > HybridReverseGeocoder
  • Renaming the following implementations of SearchApi:
    • OnboardSearchApi > OfflineSearch
    • OnlineSearchApi > OnlineSearch
    • HybridSearchApi > HybridSearch
  • Changing the following:
    • OnboardStructuredSearchApi, implementation of StructuredSearchApi to OfflineStructuredSearch
    • OnlineFuelPriceApi, implementation of FuelPriceApi to OnlineFuelPriceProvider
    • OnlineParkingDetailsApi, implementation of ParkingDetailsApi to OnlineParkingDetailsProvider
    • OnlineChargingStationAvailability, implementation of ChargingStationAvailability to OnlineEvChargingAvailabilityProvider
    • ChargingStationAvailabilityOptions to EvChargingAvailabilityOptions
    • ChargingStationAvailabilityResponse to EvChargingAvailabilityResponse
    • ChargingStationAvailabilityCallback to EvChargingAvailabilityCallback
    • EvConnectorAvailabilityId to EvChargingAvailabilityId

What is changing?

  • Changing TollgateInstruction.tollgateName type to TextWithPhonetics
  • Renaming turnAngleInDegrees to turnAngle and changing its type to Angle

Announcing breaking changes: November 7, 2022

General

What is changing?

  • We are removing:
  • common:telemetry
  • NetworkChecker
  • We are moving:
  • common:ui > navigation.ui
  • AppVersionProvider > common:net
  • common:ttp > apps:navigation-demo-app
  • Interpolation > maps:display
  • IteratorExtensions > com.tomtom.sdk.fileloader.handlers
  • We are renaming:
  • com.tomtom.sdk.search.online.additionaldata > com.tomtom.sdk.search.additionaldata.online
  • com.tomtom.sdk.search.hybrid.reversegeocoding > com.tomtom.sdk.search.reversegeocoder.hybrid
  • com.tomtom.sdk.search.reversegeocoding > com.tomtom.sdk.search.reversegeocoder
  • com.tomtom.sdk.search.onboard.reversegeocoding > com.tomtom.sdk.search.reversegeocoder.offline
  • com.tomtom.sdk.search.online.reversegeocoding > com.tomtom.sdk.search.reversegeocoder.online
  • com.tomtom.sdk.search.client > com.tomtom.sdk.search
  • com.tomtom.sdk.search.hybrid.client > com.tomtom.sdk.search.hybrid
  • com.tomtom.sdk.search.onboard.client > com.tomtom.sdk.search.offline
  • com.tomtom.sdk.search.online.client > com.tomtom.sdk.search.online
  • com.tomtom.sdk.search.onboard.structuredsearch > com.tomtom.sdk.search.structuredsearch.offline
  • com.tomtom.sdk.search.dynamicdata.client > com.tomtom.sdk.search.dynamicdata
  • com.tomtom.sdk.search.dynamicdata.client > com.tomtom.sdk.search.dynamicdata.online
  • com.tomtom.sdk.telemetry.api > com.tomtom.sdk.telemetry
  • com.tomtom.sdk.telemetry.client > com.tomtom.sdk.telemetry
  • com.tomtom.sdk.vehicle.api > com.tomtom.sdk.vehicle

Maps

What is changing?

  • In previous SDKs, the NdsStore’s methods addRegionGraphListener and removeRegionGraphListener were accepting lambdas and then functional interfaces (SAM) could be passed to it. With the future SDK that will change and a RegionGraphListener has to be implemented and passed in. There is also a difference in behavior as previously any changes to the state of the nodes in the graph would trigger an onRegionGraphChanged notification. To increase the usability of the API, we will separate the notifications that impact the structure of the graph (new structure of the nodes) from those that notify changes in the state of the node.

Search

What is changing?

  • We are renaming:
  • com.tomtom.sdk.search.online.additionaldata > com.tomtom.sdk.search.additionaldata.online
  • com.tomtom.sdk.search.hybrid.reversegeocoding > com.tomtom.sdk.search.reversegeocoder.hybrid
  • com.tomtom.sdk.search.reversegeocoding > com.tomtom.sdk.search.reversegeocoder
  • com.tomtom.sdk.search.onboard.reversegeocoding > com.tomtom.sdk.search.reversegeocoder.offline
  • com.tomtom.sdk.search.online.reversegeocoding > com.tomtom.sdk.search.reversegeocoder.online
  • com.tomtom.sdk.search.client > com.tomtom.sdk.search
  • com.tomtom.sdk.search.hybrid.client > com.tomtom.sdk.search.hybrid
  • com.tomtom.sdk.search.onboard.client > com.tomtom.sdk.search.offline
  • com.tomtom.sdk.search.online.client > com.tomtom.sdk.search.online
  • com.tomtom.sdk.search.onboard.structuredsearch > com.tomtom.sdk.search.structuredsearch.offline
  • com.tomtom.sdk.search.dynamicdata.client > com.tomtom.sdk.search.dynamicdata
  • com.tomtom.sdk.search.dynamicdata.client > com.tomtom.sdk.search.dynamicdata.online

Routing

What is changing?

  • We are renaming:
  • com.tomtom.range.api > com.tomtom.range
  • com.tomtom.range.onboard > com.tomtom.range.offline
  • RangeApi > RangeCalculator
  • OnlineRangeApi > OnlineRangeCalculator
  • OnboardRangeApi > OfflineRangeCalculator

What is changing?

  • We are removing the routing verbal message generator from the public API.

Announcing breaking changes: October 31, 2022

General

What is changing?

  • We are moving ChargingInformation class to com.tomtom.sdk.common.ev package.
  • We are changing packages: com.tomtom.sdk.featuretoggle > com.tomtom.sdk.common.featuretoggle.
  • We are renaming packages in maps-display, common, route, and location modules.
  • We are renaming API classes in common and location modules.

Maps

What is changing?

  • In previous SDKs, the NdsStore’s methods addRegionGraphListener and removeRegionGraphListener were accepting lambdas and then functional interfaces (SAM) could be passed to it. With the future SDK, that will change and a RegionGraphListener must be implemented and passed in. There is also a difference in behavior. Previously, any changes to the state of the nodes in the graph would have triggered an onRegionGraphChanged notification. To increase the usability of the API, we will separate the notifications that impact the structure of the graph (new structure of the nodes) from those that notify about changes in the state of the node.

Routing

What is changing?

  • We are converting AlternativeType from enum to value class.
  • We are converting SectionType from enum to value class.
  • We are converting ExtendedSections from enum to value class.
  • We are converting AvoidType from enum to value class.
  • We are converting Windingness from enum to value class.
  • We are converting Hilliness from enum to value class.
  • We are converting ProgressPoints from enum to value class.
  • We are converting ComputeTravelTimeFor from enum to value class.
  • We are converting ConsiderTraffic enum to value class.
  • We are replacing TravelModeSection with VehicleRestrictedSection.
  • We are removing TravelMode (enum) from Section and adding VehicleType (value class) to Vehicle instead.
  • We are renaming RoutingApi to RoutePlanner.
  • We are renaming OnlineRoutingApi to OnlineRoutePlanner.
  • We are renaming OnboardRoutingApi to OfflineRoutePlanner.
  • We are renaming HybridRoutingApi to HybridRoutePlanner.
  • We are renaming com.tomtom.routing.onboard to com.tomtom.routing.offline.
  • We are renaming com.tomtom.routing.api to com.tomtom.routing.

Minor change

  • We are adding field routeCreationTimeInMillis to Route.

What is changing?

  • We are removing routeCreationTime from NavigationSnapshot (move to Route).
  • We are moving InstructionPhase to com.tomtom.sdk.navigation.guidance.
  • We are removing AnnouncementManeuver and renaming Instruction.isPossibleToCombineWithNext.
  • We are renaming the GuidanceEngineFactory method create to createStaticGuidanceEngine, updating and enriching documentation for GuidanceEngineFactory.
  • We are handling GuidanceEngine AUTO units option based on current country.
  • We are converting AnnouncementPoints from enum to value class.
  • We are removing com.tomtom.sdk.navigation.guidance.AnnouncementGenerator from public API.
  • We are removing announcementGenerators from com.tomtom.sdk.navigation.guidance.GuidanceEngineOptions.