Announcements

Last edit: 2023.11.06

This page contains important announcements about new iOS 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?

  • We are renaming the following:
    • Vehicle.VehicleUpdateOption to Vehicle.PropertyID
    • Vehicle.VehicleUpdateOption.commercialVehicle to Vehicle.PropertyID.isCommercial
    • Vehicle.VehicleProperty.commercialVehicle to Vehicle.VehicleProperty.isCommercial

What is changing?

  • Replace CancellableSearch with Search
  • Replace OnlineSearchFactory.createCancellableOnlineSearch and OnlineSearchFactory.createOnlineSearch with OnlineSearchFactory.create

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?

  • We are renaming the following:
    • VehicleParameter to VehicleProperty.
    • CombustionEngineParameter to CombustionEngineProperty.
    • ElectricEngineParameter to ElectricEngineProperty.
    • CombustionEngineParameter.auxiliaryFuelPower to CombustionEngineProperty.speedConsumption.
    • CombustionEngineParameter.speedFuelConsumption to CombustionEngineProperty.speedConsumption.
    • VehicleUpdateOption.speedFuelConsumption to VehicleUpdateOption.combustionSpeedConsumption.
    • VehicleUpdateOption.speedConsumption to VehicleUpdateOption.electricSpeedConsumption.
    • VehicleUpdateOption.auxiliaryFuelPower to VehicleUpdateOption.combustionAuxiliaryPower.
    • VehicleUpdateOption.auxiliaryPower to VehicleUpdateOption.electricAuxiliaryPower.

What is changing?

  • We are deleting TomTomSDKDefaultTextToSpeech.SystemTextToSpeechEngine.init(voiceIdentifier) as it has the same logic as the TomTomSDKDefaultTextToSpeech.SystemTextToSpeechEngine.init(language:gender:) initializer.
  • Added changes for TomTomSDKDefaultTextToSpeech.SystemTextToSpeechEngine.init(language:gender:) initializer:
    • throwing an error if there is no speech voice for the given language.
    • making language parameters non-optional with a default value.

Announcing breaking changes: October 23, 2023

What is changing?

  • We have added the following methods:

    • TomTomSDKNavigation.TomTomNavigation.departFromWaypoint(waypoint: RouteStop).
    • TomTomSDKNavigation.DefaultTomTomNavigation.departFromWaypoint(waypoint: RouteStop).
  • We have removed the following methods:

    • TomTomSDKNavigation.TomTomNavigation.markWaypointAsVisited(waypoint: RouteStop).
    • TomTomSDKNavigation.DefaultTomTomNavigation.markWaypointAsVisited(waypoint: RouteStop).
  • Use the following methods instead:

    • TomTomSDKNavigation.TomTomNavigation.departFromWaypoint(waypoint: RouteStop).
    • TomTomSDKNavigation.DefaultTomTomNavigation.departFromWaypoint(waypoint: RouteStop).
  • We are removing all LocationContextProviderEngines:

    • TomTomSDKLocationContextProviderEngineHybrid.
    • TomTomSDKLocationContextProviderEngineOffline.
    • TomTomSDKLocationContextProviderEngineTileStore.

Minor changes

  • We are deprecating TomTomSDKNavigation.TomTomGuidanceEngine.defaultAppendInstructionDistanceThreshold. Use the TomTomSDKNavigation.TomTomGuidanceEngine.Defaults.appendInstructionDistanceThreshold instead.

  • We are removing the following:

    • TomTomSDKNavigation.TomTomArrivalDetectionEngine.defaultDestinationDistanceThreshold.
    • TomTomSDKNavigation.TomTomArrivalDetectionEngine.defaultTimeThreshold.
  • We are removing the following:

    • TomTomSDKNavigation.RouteReplanningEngineOptions.defaultRouteUpdateMode,
    • TomTomSDKNavigation.RouteReplanningEngineOptions.defaultReplanInterval,
    • TomTomSDKNavigation.RouteReplanningEngineOptions.defaultMinTrafficDelay,
    • TomTomSDKNavigation.RouteReplanningEngineOptions.defaultMinTimeDifference. Use the constants from TomTomSDKNavigation.RouteReplanningEngineOptions.Defaults enum instead.
  • We added conformance to Equatable to TomTomSDKNavigationEngines.RegionalSpeedLimit.

Announcing breaking changes: October 16, 2023

Maps

Minor changes

  • We are renaming RouteSection.textureUri to RouteSection.textureURI.
  • We are renaming the initializer RouteSection.init(indexRange:type:textureUri:) to RouteSection.init(indexRange:type:textureURI:).

What is changing?

  • We are adding the TomTomSDKHorizonEngineTileStore.TileStoreHorizonEngineFactory.

Minor changes

  • We are making TomTomSDKNavigationOnline.OnlineTomTomNavigationFactory.create(configuration: Configuration) to return a default horizon engine if it has not been provided with the configuration.

Routing

What is changing?

  • We are changing the following property type:
    • TomTomSDKRoutePlanner.RangeCalculationOptions.routeToInclude, from [CoreLocation.CLLocationCoordinate2D]? to TomTomSDKRoute.Route?.

Announcing breaking changes: October 9, 2023

General

What is changing?

  • We are adding the TomTomSDKCommon.RoadCategory enum to TomTomSDKCommon.

What is changing?

  • We are renaming the following:

    • TomTomSDKNavigationEngines.City to TomTomSDKNavigationEngines.CityElement.
    • TomTomSDKNavigationEngines.CountryInformation to TomTomSDKNavigationEngines.CountryInformationElement.
    • TomTomSDKNavigationEngines.DangerousGoodsRestriction to TomTomSDKNavigationEngines.DangerousGoodsRestrictionElement.
    • TomTomSDKNavigationEngines.GeneralRoadProperties to TomTomSDKNavigationEngines.GeneralRoadPropertiesElement.
    • TomTomSDKNavigationEngines.PathGeometry to TomTomSDKNavigationEngines.PathGeometryElement.
    • TomTomSDKNavigationEngines.Region to TomTomSDKNavigationEngines.RegionElement.
    • TomTomSDKNavigationEngines.SafetyLocation to TomTomSDKNavigationEngines.SafetyLocationElement.
    • TomTomSDKNavigationEngines.SpeedLimits to TomTomSDKNavigationEngines.SpeedLimitsElement.
    • TomTomSDKNavigationEngines.Street to TomTomSDKNavigationEngines.StreetElement.
    • TomTomSDKNavigationEngines.TrafficSign to TomTomSDKNavigationEngines.TrafficSignElement.
    • TomTomSDKNavigationEngines.VehicleRestriction to TomTomSDKNavigationEngines.VehicleRestrictionElement.
  • We are removing the TomTomSDKNavigationEngines.RegionalSpeedLimit.RoadType enum from TomTomSDKNavigationEngines.RegionalSpeedLimit.

  • We are removing the following properties from TomTomSDKNavigationEngines.RegionalSpeedLimit:

    • roadType: RegionalSpeedLimit.RoadType?,
    • isWeatherDependent: Bool,
    • isTimeDependent: Bool,
    • type: RegionalSpeedLimit.SpeedLimitType,
    • speed: Measurement?
  • We are adding the following properties to TomTomSDKNavigationEngines.RegionalSpeedLimit: speedLimit:

    • TomTomSDKCommon.SpeedLimit,
    • roadCategory: TomTomSDKCommon.RoadCategory?

Routing

What is changing?

  • In TomTomSDKNavigationEngines:
    • We are removing NavigationOptions.alternativeRoutePlans.
    • We are replacing NavigationOptions.init(activeRoutePlan:, alternativeRoutePlans:) with NavigationOptions.init(activeRoutePlan:).
    • We are renaming RoutePlan.routingOptions to RoutePlan.routePlanningOptions.
    • We are replacing RoutePlan.init(route:routingOptions:) with RoutePlan.init(route:routePlanningOptions:).

Announcing breaking changes: October 2, 2023

General

What is changing?

  • We are adding enum TomTomSDKCommon.SpeedLimit to TomTomSDKCommon.

Maps

What is changing?

  • We are removing the constructor RouteSection.init(range:type:) and renaming it to RouteSection.init(indexRange:type:).
  • We are renaming the enum RouteSection.RouteSectionError to enum Error.
  • We are renaming var RouteSection.range to var indexRange.

In TomTomSDKRangeVisualization:

  • We are renaming the enum case Range.namedPolygon to Range.namedPolygons. To recover from the breaking change, instead of using Range.namedPolygon use Range.namedPolygons.

Minor changes

We are adding:

  • The geometry property to RouteOptions.
  • The geometry property to Route.
  • The tag property to RouteOptions.
  • The textureUri property to RouteSection.
  • The widths property to RouteOptions.
  • The WidthByZoom struct.
  • We are making TomTomSDKNavigation.TomTomNavigation a class-only protocol. We are converting implementations of TomTomSDKNavigation.TomTomNavigation to classes.

  • We are removing the enum TomTomSDKNavigationEngines.SpeedLimit from TomTomSDKNavigationEngines.

  • We are renaming the struct TomTomSDKNavigationEngines.SpeedLimits to TomTomSDKNavigationEngines.SpeedLimit.

  • We are adding the protocol TomTomSDKNavigation.NavigationDestinationArrivalObserver.

  • We are adding the protocol TomTomSDKNavigation.NavigationWaypointArrivalObserver.

  • We are adding the methods TomTomSDKNavigation.TomTomNavigation.addDestinationArrivalObserver(_:) and TomTomSDKNavigation.TomTomNavigation.removeDestinationArrivalObserver(_:).

  • We are adding the methods TomTomSDKNavigation.TomTomNavigation.addWaypointArrivalObserver(_:) and TomTomSDKNavigation.TomTomNavigation.removeWaypointArrivalObserver(_:).

  • We are adding the methods TomTomSDKNavigation.DefaultTomTomNavigation.addDestinationArrivalObserver(_:) and TomTomSDKNavigation.DefaultTomTomNavigation.removeDestinationArrivalObserver(_:).

  • We are adding the methods TomTomSDKNavigation.DefaultTomTomNavigation.addWaypointArrivalObserver(_:) and TomTomSDKNavigation.DefaultTomTomNavigation.removeWaypointArrivalObserver(_:).

  • We are adding the following cases to enum TomTomSDKNavigation.NavigationEvent: .destinationArrivalEvent(DestinationArrivalEvent) and .waypointArrivalEvent(WaypointArrivalEvent).

  • We are adding the enums TomTomSDKNavigation.DestinationArrivalEvent and TomTomSDKNavigation.WaypointArrivalEvent.

  • We are renaming the enum case WaypointArrivalEvent.didVisitWaypoint to WaypointArrivalEvent.didDepartFromWaypoint.

  • We are removing the protocol TomTomSDKNavigation.NavigationArrivalObserver.

    • Use the protocol TomTomSDKNavigation.NavigationDestinationArrivalObserver to observe events related to arrival at destination, instead of the removed protocol TomTomSDKNavigation.NavigationArrivalObserver.
    • Use the protocol TomTomSDKNavigation.NavigationWaypointArrivalObserver to observe events related to arrival at waypoints instead of the removed protocol TomTomSDKNavigation.NavigationArrivalObserver.
  • We are removing the methods TomTomSDKNavigation.TomTomNavigation.addArrivalObserver(_:) and TomTomSDKNavigation.TomTomNavigation.removeArrivalObserver(_:).

    • Use the methods TomTomSDKNavigation.TomTomNavigation.addDestinationArrivalObserver(_:)/removeDestinationArrivalObserver(_:) or TomTomSDKNavigation.TomTomNavigation.addWaypointArrivalObserver(_:)/removeWaypointArrivalObserver(_:) instead of the removed methods.
  • We are removing the methods TomTomSDKNavigation.DefaultTomTomNavigation.addArrivalObserver(_:) and TomTomSDKNavigation.DefaultTomTomNavigation.removeArrivalObserver(_:).

    • Use the methods TomTomSDKNavigation.DefaultTomTomNavigation.addDestinationArrivalObserver(_:)/removeDestinationArrivalObserver(_:) or TomTomSDKNavigation.DefaultTomTomNavigation.addWaypointArrivalObserver(_:)/removeWaypointArrivalObserver(_:) instead of the removed methods.
  • We are removing the case .arrivalEvent(ArrivalEvent) from enum TomTomSDKNavigation.NavigationEvent.

    • Use the cases .destinationArrivalEvent(DestinationArrivalEvent) and .waypointArrivalEvent(WaypointArrivalEvent) instead of the removed case .arrivalEvent(ArrivalEvent).
  • We are removing the enum TomTomSDKNavigation.ArrivalEvent.

    • Use the enums TomTomSDKNavigation.DestinationArrivalEvent and TomTomSDKNavigation.WaypointArrivalEvent instead of the removed enum.
  • In typealias TomTomSDKNavigation.NavigationObserver:

    • We are removing the protocol TomTomSDKNavigation.NavigationArrivalObserver from the composition of protocols.
    • We are adding the protocol TomTomSDKNavigation.NavigationDestinationArrivalObserver to the composition of protocols.
    • We are adding the protocol TomTomSDKNavigation.NavigationWaypointArrivalObserver to the composition of protocols.
      • For implementations of the TomTomSDKNavigation.NavigationObserver protocol, implement requirements of the added protocols, remove implementation of the methods of the removed protocol, and change method calls respectively, where necessary.

Minor changes

  • We are making the TomTomSDKNavigationEngines.SpeedLimit conform to the Equatable protocol.
  • We are removing the following properties from TomTomSDKNavigationEngines.SpeedLimit:
    • speed,
    • type,
    • speedFog,
    • speedSnow, and
    • speedRain.
  • We are adding the following property to TomTomSDKNavigationEngines.SpeedLimit: speedLimit.

Announcing breaking changes: September 25, 2023

General

What is changing?

  • We are removing the struct CombustionEngine.Builder; use the initializer CombustionEngine instead.
  • We are removing the struct ElectricEngine.Builder; use the initializer ElectricEngine instead.
  • We are removing the func CombustionEngine.copy(build:).
  • We are removing the func ElectricEngine.copy(build:).

Minor changes

  • We are changing the class CombustionEngine to a struct.

  • We are changing the class ElectricEngine to a struct.

  • The related types of ElectricEngine and CombustionEngine were nested inside the respective engines. Type-aliases were introduced with the same namespace as before to point at the new scope of these types, so the customer doesn't have to change his existing code, therefore preventing breaking changes. Although, it is advised for any new code to use the original types, i.e.:

    • Instead of using TomTomSDKCommon.CombustionVehicleConsumption, use TomTomSDKCommon.CombustionEngine.Consumption.
    • Instead of using TomTomSDKCommon.CombustionVehicleEfficiency, use TomTomSDKCommon.CombustionEngine.Efficiency.
    • Instead of using TomTomSDKCommon.ElectricVehicleConsumption, use TomTomSDKCommon.ElectricEngine.Consumption.
    • Instead of using TomTomSDKCommon.ElectricVehicleEfficiency, use TomTomSDKCommon.ElectricEngine.Efficiency.
    • Instead of using TomTomSDKCommon.ChargeLevel, use TomTomSDKCommon.ElectricEngine.ChargeLevel.
    • Instead of using TomTomSDKCommon.ChargingParameters, use TomTomSDKCommon.ElectricEngine.ChargingParameters.

These are the affected places in the codebase (Does not require the client to change any of his existing code as type-aliases were introduced):

  • Accessor CombustionEngine.consumption.Get() has a return type change from TomTomSDKCommon.CombustionVehicleConsumption? to TomTomSDKCommon.CombustionEngine.Consumption?.
  • Accessor CombustionEngine.efficiency.Get() has a return type change from TomTomSDKCommon.CombustionVehicleEfficiency? to TomTomSDKCommon.CombustionEngine.Efficiency?.
  • Accessor ElectricEngine.consumption.Get() has a return type change from TomTomSDKCommon.ElectricVehicleConsumption? to TomTomSDKCommon.ElectricEngine.Consumption?.
  • Accessor ElectricEngine.efficiency.Get() has a return type change from TomTomSDKCommon.ElectricVehicleEfficiency? to TomTomSDKCommon.ElectricEngine.Efficiency?.
  • Constructor CombustionEngine.init(consumption:efficiency:currentFuel:) has a parameter 0 type change from TomTomSDKCommon.CombustionVehicleConsumption? to TomTomSDKCommon.CombustionEngine.Consumption?.
  • Constructor CombustionEngine.init(consumption:efficiency:currentFuel:) has a parameter 1 type change from TomTomSDKCommon.CombustionVehicleEfficiency? to TomTomSDKCommon.CombustionEngine.Efficiency?.
  • Constructor ElectricEngine.init(consumption:efficiency:chargeLevel:chargingParameters:) has a parameter 0 type change from TomTomSDKCommon.ElectricVehicleConsumption? to TomTomSDKCommon.ElectricEngine.Consumption?.
  • Constructor ElectricEngine.init(consumption:efficiency:chargeLevel:chargingParameters:) has a parameter 1 type change from TomTomSDKCommon.ElectricVehicleEfficiency? to TomTomSDKCommon.ElectricEngine.Efficiency?.
  • Var CombustionEngine.consumption has a declared type change from TomTomSDKCommon.CombustionVehicleConsumption? to TomTomSDKCommon.CombustionEngine.Consumption?.
  • Var CombustionEngine.efficiency has a declared type change from TomTomSDKCommon.CombustionVehicleEfficiency? to TomTomSDKCommon.CombustionEngine.Efficiency?.
  • Var ElectricEngine.consumption has a declared type change from TomTomSDKCommon.ElectricVehicleConsumption? to TomTomSDKCommon.ElectricEngine.Consumption?.
  • Var ElectricEngine.efficiency has a declared type change from TomTomSDKCommon.ElectricVehicleEfficiency? to TomTomSDKCommon.ElectricEngine.Efficiency?.

Maps

What is changing?

  • We are introducing a new enum CameraOperatorRoadClass.
  • We are updating the type signature of FollowCameraOperatorConfig.ControlPointsMap from [String: ControlPoints] to [CameraOperatorRoadClass: ControlPoints]. To recover, use the new CameraOperatorRoadClass enum cases as keys when defining control points in the map.
  • We are removing FollowCameraOperatorConfig.RoadClass. To recover, use the new CameraOperatorRoadClass enum cases as keys when defining control points in the map.

Announcing breaking changes: September 18, 2023

General

Minor changes

  • We are changing the optionality of the RoadProperties.numberOfLanes property.
  • We are changing the optionality of parameter 0 in the RoadProperties constructor.
  • We are removing the default argument from parameter 0 in the RoadProperties constructor.
  • We are removing the NumberOfLanes.init(inDrivingDirection:inOppositeDirection:) constructor.

Maps

What is changing?

  • We are renaming CompositeRegionsUpdater.cancelAllMapOperations(regionIDs:) to func cancelAllMapOperations(for:).
  • We are renaming NDSStore.cancelAllMapOperations(regionIDs:) to func cancelAllMapOperations(for:).

Announcing breaking changes: September 11, 2023

Search

What is changing?

In TomTomSDKSearchVisualization:

  • We are renaming func SearchVisualization.clearAllPOIs() to func clear().
  • We are renaming func SearchVisualization.displayPOIs(from:) to func displayPOIsAlongRoute(geometry:configuration:completion:).
  • We are renaming func SearchVisualizationFactory.createSearchVisualization(map:) to func create(with:and:).
  • We are renaming Import UIKit to Import CoreLocation.
  • Func SearchVisualization.displayPOIs(from:) has a parameter 0 type change from [TomTomSDKSearch.SearchResult] to [CoreLocation.CLLocationCoordinate2D].
  • Func SearchVisualizationFactory.createSearchVisualization(map:) has a parameter 0 type change from TomTomSDKMapDisplay.TomTomMap to TomTomSDKSearch.Search.

What is changing?

In TomTomSDKNavigationCommon:

  • We are adding:
    • enum GeneralRoadPropertiesError.
    • enum RoadCondition.
    • enum RoadPropertiesError.
    • struct LocationContext.RoadProperties.
  • We are removing struct NumberOfLanes.

In TomTomSDKNavigationEngines we are removing:

  • enum FormOfWay.
  • enum GeneralRoadPropertiesError.
  • enum RoadCondition.
  • enum RoadPropertiesError.
  • struct LocationContext.RoadProperties.
  • struct NumberOfLanes.

In LocationContext:

  • We are making var LocationContext.address optional.

In GeneralRoadProperties:

  • We are adding:
    • Constructor GeneralRoadProperties.init(id:pathID:startOffset:endOffset:roadProperties).
    • Var GeneralRoadProperties.roadProperties.
  • We are removing constructor GeneralRoadProperties.init(id:pathID:startOffset:endOffset:numberOfLanes:functionalRoadClass:formOfWay:roadCondition:drivingSide:isOverpass:isUnderpass:isDividedRoad:isTransitProhibited:isTollRoad:isUrbanArea:isComplexIntersection:isTunnel:tunnelName:isBridge:bridgeName:).
  • We are removing the following:
    • Var GeneralRoadProperties.bridgeName.
    • Var GeneralRoadProperties.drivingSide.
    • Var GeneralRoadProperties.formOfWay.
    • Var GeneralRoadProperties.functionalRoadClass.
    • Var GeneralRoadProperties.isBridge.
    • Var GeneralRoadProperties.isComplexIntersection.
    • Var GeneralRoadProperties.isDividedRoad.
    • Var GeneralRoadProperties.isOverpass.
    • Var GeneralRoadProperties.isTollRoad.
    • Var GeneralRoadProperties.isTransitProhibited.
    • Var GeneralRoadProperties.isTunnel.
    • Var GeneralRoadProperties.isUnderpass.
    • Var GeneralRoadProperties.isUrbanArea.
    • Var GeneralRoadProperties.numberOfLanes.
    • Var GeneralRoadProperties.roadCondition.
    • Var GeneralRoadProperties.tunnelName.

In TomTomSDKNavigationVisualization:

  • We are adding func NavigationVisualization.setCameraTrackingMode(_:) as a protocol requirement.

Announcing breaking changes: September 04, 2023

General

What is changing?

  • We are removing TomTomSDKNetworking.HTTPInterceptorObserver, TomTomSDKNetworking.HTTPResponse and TomTomSDKNetworking.HTTPStatusCode. Everything inside the TomTomSDKNetworking framework was supposed to be marked as "internal-only", but these types were accidentally excluded.

Maps

What is changing?

  • We are removing the public initializers for TomTomSDKDataManagementOffline.RegionGraphNodeID and TomTomSDKDataManagementOffline.CompositeRegionID. As there is no guarantee that these IDs will be valid across the application sessions, and to prevent issues when an unexpected value is provided (and also to avoid breaking changes in the future [because the internal fields could be changed]), we're removing the public initializers of these objects.

What is changing?

  • We are renaming:

    • The TomTomSDKNavigationEngines.EngineActions protocol to TomTomSDKNavigation.TomTomNavigation.
    • The TomTomSDKNavigation.Navigation class to TomTomSDKNavigation.DefaultTomTomNavigation.
  • We are also adding missing functions and properties to the TomTomSDKNavigationEngines.TomTomNavigation protocol, so the TomTomSDKNavigationEngines.TomTomNavigation protocol and TomTomSDKNavigation.DefaultTomTomNavigation class have the same APIs. From now on TomTomSDKNavigationEngines.TomTomNavigation protocol could be used instead of TomTomSDKNavigation.DefaultTomTomNavigation class. We will eventually deprecate the TomTomSDKNavigation.DefaultTomTomNavigation class and later remove it from the public API to discourage the usage of the concrete implementation class.

    • The Navigation setup code before the change:
    let navigation: Navigation = try OnlineTomTomNavigationFactory.create(configuration: configuration) as! Navigation
    • The Navigation setup code after the change:
    let navigation: TomTomNavigation = try OnlineTomTomNavigationFactory.create(configuration: configuration)
    • Do the following to adapt your project to these API changes:
      1. Replace the usage of the Navigation class with the TomTomNavigation protocol.
      2. Remove the force casts from the Navigation class when registering navigation observers.

Announcing breaking changes: August 30, 2023

What is changing?

  • We are changing DataSourceSelectionEngine.process(navigationSnapshot:) to DataSourceSelectionEngine.select(navigationSnapshot:).
  • We are changing NavigationDataSourceType to NavigationDataSource.
  • We are changing NavigationDataStoreUpdateMode to DataStoreUpdateMode.

Announcing breaking changes: August 21, 2023

Maps

What is changing?

In TomTomSDKTrafficTPEG:

  • Func TPEGTrafficService.updateCurrentPosition(_:) is now throwing an invalid coordinate. Existing code should be updated with try and catch.

  • Func TPEGTrafficService.updateRoutesForTraffic(_:) is now throwing an invalid coordinate. Existing code should be updated with try and catch.

In TomTomSDKNavigationVisualization:

  • We are renaming enumElement SafetyLocationCountOptions.firstNLocations to SafetyLocationCountOptions.numberOfLocations.
  • We are removing func NavigationVisualization.selectGuidanceType(_:).
  • We are adding accessor NavigationVisualization.guidanceType.Set() as a protocol requirement.

Announcing breaking changes: August 14, 2023

Maps

What is changing?

  • We are removing the RenderedFeatureQueryBuilder class; clients are advised to initialize RenderedFeatureQueryOptions directly.
  • Range is validated when creating an instance of RouteSection, therefore, the init may throw.

NavigationVisualization:

In StyleConfiguration we are renaming the following:

  • StyleConfiguration.init(route:routeTraffic:horizonStyle:destinationConnectionLine:) to StyleConfiguration.init(route:routeTrafficIncident:safetyLocationStyle:destinationConnectionLine:).
  • StyleConfiguration.horizonStyle to StyleConfiguration.safetyLocationStyle.
  • StyleConfiguration.routeTraffic to routeTrafficIncident.

In NavigationVisualization we are renaming the following:

  • NavigationVisualization.trafficOnRoute(route:) to NavigationVisualization.trafficIncidents(on:).
  • NavigationVisualization.horizonVisualization to NavigationVisualization.safetyLocationVisualization.
  • NavigationVisualization.zoomToRoutesEnabled to NavigationVisualization.isZoomToRoutePlanEnabled.
  • NavigationVisualization.clear() to clearRoutePlan().
  • NavigationVisualization.trafficIncidentsEnabled to areTrafficIncidentsEnabled.

Minor changes

  • RenderedFeatureQueryOptions initializer now has default parameters.

Announcing breaking changes: August 7, 2023

General

Minor changes

  • The Struct Address now conforms to the Equatable protocol.

What is changing?

In TomTomSDKNavigationEngines:

  • We are removing:

    • Constructor LocationContext.init(speed:speedLimit:road:address:).
    • Enum TypeOfRoad.
    • Struct LocationContext.Address.
  • We are renaming struct LocationContext.Road to struct RoadProperties.

  • Accessor LocationContext.Road.roadType.Get() has a return type change from TomTomSDKNavigationEngines.TypeOfRoad? to TomTomSDKCommon.RoadType?

  • Accessor LocationContext.road.Get() has a return type change from TomTomSDKNavigationEngines.LocationContext.Road? to TomTomSDKNavigationEngines.LocationContext.RoadProperties?

  • Constructor LocationContext.Road.init(functionalRoadClass:isTunnel:isUnderpass:roadType:isLeftHandDriving:) has a parameter 3 type change from TomTomSDKNavigationEngines.TypeOfRoad? to TomTomSDKCommon.RoadType?

  • Constructor LocationContext.Road.init(functionalRoadClass:isTunnel:isUnderpass:roadType:isLeftHandDriving:) has a return type change from TomTomSDKNavigationEngines.LocationContext.Road to TomTomSDKNavigationEngines.LocationContext.RoadProperties.

  • Func LocationContext.Road.==(_:_:) has a parameter 0 type change from TomTomSDKNavigationEngines.LocationContext.Road to TomTomSDKNavigationEngines.LocationContext.RoadProperties.

  • Func LocationContext.Road.==(_:_:) has parameter 1 type change from TomTomSDKNavigationEngines.LocationContext.Road to TomTomSDKNavigationEngines.LocationContext.RoadProperties.

  • Var LocationContext.Road.roadType has declared type change from TomTomSDKNavigationEngines.TypeOfRoad? to TomTomSDKCommon.RoadType?.

  • Var LocationContext.road has declared type change from TomTomSDKNavigationEngines.LocationContext.Road? to TomTomSDKNavigationEngines.LocationContext.RoadProperties?

  • Constructor LocationContext.Road.init(functionalRoadClass:isTunnel:isUnderpass:roadType:isLeftHandDriving:) is now throwing TomTomSDKNavigationEngines.EngineActions protocol to TomTomSDKNavigation.TomTomNavigation and TomTomSDKNavigation.Navigation class to TomTomSDKNavigation.DefaultTomTomNavigation.

  • We are also adding missing functions and properties to the TomTomSDKNavigationEngines.TomTomNavigation protocol, so the TomTomSDKNavigationEngines.TomTomNavigation protocol and TomTomSDKNavigation.DefaultTomTomNavigation class have the same APIs. From now on TomTomSDKNavigationEngines.TomTomNavigation protocol could be used instead of TomTomSDKNavigation.DefaultTomTomNavigation class. We will eventually deprecate the TomTomSDKNavigation.DefaultTomTomNavigation class and later remove it from the public API to discourage the usage of the concrete implementation class.

The Navigation setup code before the change:

let navigation: Navigation = try OnlineTomTomNavigationFactory.create(configuration: configuration) as! Navigation

The Navigation setup code after the change:

let navigation: TomTomNavigation = try OnlineTomTomNavigationFactory.create(configuration: configuration)

Minor changes

In TomTomSDKNavigation we are removing the following:

  • constructor RouteReplanningEngineOptions.init(routeUpdateMode:routeReplanInterval:minTrafficDelay:minTimeDifference:routeReplanningPolicy:).
  • Var RouteReplanningEngineOptions.Defaults.routeReplanningPolicy.
  • Var RouteReplanningEngineOptions.defaultRouteReplanningPolicy.
  • Var RouteReplanningEngineOptions.routeReplanningPolicy.
  • TomTomSDKRouteReplanner: Enum ContinuousReplanningPolicy.

Routing

What is changing?

In TomTomSDKVehicle we are changing the following:

  • Protocol VehicleUpdateObserver has generic signature change and is now based on TomTomSDKCommon.Observer.

In TomTomSDKVehicle we are removing the following:

  • Class AnyVehicleUpdateObserver.
  • Func DefaultVehicleProvider.registerVehicleUpdateObserver(_:).
  • Func DefaultVehicleProvider.registerVehicleUpdateObserver(_:options:).
  • Func DefaultVehicleProvider.unregisterVehicleUpdateObserver(_:).
  • Func VehicleProvider.registerVehicleUpdateObserver(_:).
  • Func VehicleProvider.registerVehicleUpdateObserver(_:options:).
  • Func VehicleProvider.unregisterVehicleUpdateObserver(_:).

In TomTomSDKVehicle we are adding the following:

  • Protocol VehicleUpdateObserver has added inherited protocol Observer.
  • Func VehicleProvider.addObserver(_:) has been added as a protocol requirement.
  • Func VehicleProvider.addObserver(_:for:) has been added as a protocol requirement.
  • Func VehicleProvider.removeObserver(_:) has been added as a protocol requirement.

In TomTomSDKNavigationEngines:

  • Func MapMatchingEngine.extrapolateLocation(navigationSnapshot:) has a return type change from TomTomSDKNavigationEngines.MapMatchingResult? to TomTomSDKNavigationEngines.MapMatchingResult.

Announcing breaking changes: August 1, 2023

Maps

  • Automatic Offline Map Updates configuration changes:

What is changing?

In the upcoming weeks, we are changing the creation and configuration of NDSStoreUpdateConfig.

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, and iqMapsRegionsAlongRouteRadius fields. All of them were moved to the AutomaticUpdatesConfiguration class, an NDSStoreUpdateConfig inner class.

How it was:

1let ndsStoreUpdateConfig = NDSStoreUpdateConfig(
2 updateStoragePath: UPDATE_STORAGE_PATH,
3 persistentStoragePath: MAP_UPDATE_PERSISTENCE_PATH,
4 updateServerURL: UPDATE_SERVER_URI,
5 updateServerAPIKey: MAP_UPDATE_SERVER_API_KEY,
6 iqMapsAllRegionsEnabled: false,
7 iqMapsRelevantRegionsEnabled: true,
8 iqMapsRelevantRegionsRadius: RELEVANT_REGIONS_RADIUS,
9 iqMapsRelevantRegionsUpdateInterval: RELEVANT_REGIONS_UPDATE_INTERVAL,
10 iqMapsRegionsAlongRouteEnabled: true,
11 iqMapsRegionsAlongRouteRadius: REGIONS_ALONG_ROUTE_RADIUS
12)

How it is now:

1let 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: RELEVANT_REGIONS_UPDATE_INTERVAL,
11 regionsAlongRouteEnabled: true,
12 regionsAlongRouteRadius: REGIONS_ALONG_ROUTE_RADIUS
13 )
14)

RoutingVisualization

  • RoutingVisualization.zoomToRoutesEnabled to isZoomToRoutePlanEnabled.
  • RoutingVisualization.zoomToRoutesEnabled.trafficIncidentsEnabled to RoutingVisualization.zoomToRoutesEnabled.areTrafficIncidentsEnabled.
  • RoutingVisualization.trafficOnRoute to RoutingVisualization.trafficIncidents(on:).
  • RoutingVisualization.clear() to RoutingVisualization.clearRoutePlan().
  • RoutingVisualizationFactory.createRoutingVisualization(tomtomMap:styleConfiguration:) to RoutingVisualizationFactory.create(map:styleConfiguration:).

StyleConfiguration

  • StyleConfiguration.routeTraffic to StyleConfiguration.routeTrafficIncidents.
  • StyleConfiguration.init(route:routeTraffic:destinationConnectionLine:) to RouteStyle.routeDepartureMarker to RouteStyle.departureMarkerImage.

RouteStyle

  • RouteStyle.init(activeLineColor:activeLineWidths:activeOutlineWidths:alternativeLineColor:alternativeLineWidths:alternativeOutlineWidths:alternativeLineColorOverrule:routeDepartureMarker:routeDestinationMarker:routeWaypointsMarker:waypointsVisible:) to RouteStyle.init(activeLineColor:activeLineWidths:activeOutlineWidths:alternativeLineColor:alternativeLineWidths:alternativeOutlineWidths:alternativeLineColorOverrule:departureMarkerImage:destinationMarkerImage:waypointsMarkerImage:areWaypointsVisible:)
  • RouteStyle.routeDestinationMarker to RouteStyle.destinationMarkerImage.
  • RouteStyle.routeWaypointsMarker to RouteStyle.waypointsMarkerImage.
  • RouteStyle.waypointsVisible to RouteStyle.areWaypointsVisible.
  • RouteStyle.Defaults.lineZoomByWidthLevels to RouteStyle.Defaults.activeLineWidths.
  • RouteStyle.Defaults.outlineWidthsWithZoomLevels to RouteStyle.Defaults.activeOutlineWidths.
  • RouteStyle.Defaults.lineZoomByWidthLevels to RouteStyle.Defaults.alternativeLineWidths.
  • RouteStyle.Defaults.outlineZoomByWidthLevels to RouteStyle.Defaults.alternativeOutlineWidths.
  • RouteStyle.Defaults.destinationMarker to RouteStyle.Defaults.destinationMarkerImage.
  • RouteStyle.Defaults.waypointMarker to RouteStyle.waypointsMarkerImage.
  • RouteStyle.Defaults.waypointsVisible to RouteStyle.Defaults.areWaypointsVisible.

RouteTrafficIncidentStyle

  • RouteTrafficIncidentStyle.outlineWidths to RouteTrafficIncidentStyle.lineOutlineWidths.
  • RouteTrafficIncidentStyle.markerLabelOutlineWidth to RouteTrafficIncidentStyle.markerLabelTextOutlineWidth.
  • RouteTrafficIncidentStyle.magnitudeOfDelayStyles to RouteTrafficIncidentStyle.propertiesByMagnitudeOfDelay.
  • RouteTrafficIncidentStyle.PropertiesByMagnitudeOfDelay to RouteTrafficIncidentStyle.MagnitudeOfDelayProperties.
  • RouteTrafficIncidentStyle.init(lineWidths:outlineWidths:lineStartCapType:lineEndCapType:lineJointType:markerLabelFontURL:markerLabelTextSize:markerLabelOutlineWidth:markerLabelTextOffset:markerLabelTextAnchoring:markerVisibilityByCategory:magnitudeOfDelayStyles:) to RouteTrafficIncidentStyle.init(lineOutlineWidths:outlineWidths:lineStartCapType:lineEndCapType:lineJointType:markerLabelFontURL:markerLabelTextSize:markerLabelTextOutlineWidth:markerLabelTextOffset:markerLabelTextAnchoring:markerVisibilityByCategory:propertiesByMagnitudeOfDelay:)
  • RouteTrafficIncidentStyle.Defaults.outlineWidths to RouteTrafficIncidentStyle.Defaults.lineOutlineWidths.
  • RouteTrafficIncidentStyle.Defaults.markerLabelOutlineWidth to RouteTrafficIncidentStyle.Defaults.markerLabelTextOutlineWidth.
  • RouteTrafficIncidentStyle.Defaults.magnitudeOfDelayStyles to RouteTrafficIncidentStyle.Defaults.propertiesByMagnitudeOfDelay.

MagnitudeOfDelayStyle

  • MagnitudeOfDelayStyle to MagnitudeOfDelayProperties.
  • MagnitudeOfDelayStyle.markerPinBaseByCategory to MagnitudeOfDelayStyle.markerPinImageByCategory.
  • MagnitudeOfDelayStyle.markerPinIconByCategory to MagnitudeOfDelayStyle.markerIconImageByCategory.
  • MagnitudeOfDelayStyle.linePatternTexture to MagnitudeOfDelayStyle.linePatternImage.

TrafficIncident

  • TrafficIncident.maker to TrafficIncident.marker.

DestinationConnectionLineStyle

  • DestinationConnectionLineStyle.lineWidth to DestinationConnectionLineStyle.width.
  • DestinationConnectionLineStyle.linePatternTexture to DestinationConnectionLineStyle.patternTexture.
  • DestinationConnectionLineStyle.init(PatternTexture:Width:) to DestinationConnectionLineStyle.init(patternTexture:Width:).
  • DestinationConnectionLineStyle.Defaults.linePatternTexture to DestinationConnectionLineStyle.Defaults.patternTexture.
  • DestinationConnectionLineStyle.Defaults.lineWidth to DestinationConnectionLineStyle.Defaults.width.

What is changing?

  • The NavigationTileStoreAccess interface is using a different tile store access in NavigationTileStore.
  • We are replacing TomTomSDKNavigationEngines.CountryInformation.DrivingSide with TomTomSDKCommon.DrivingSide.
  • We are replacing the boolean flags LocationContext.Road.isLeftHandDriving and GeneralRoadElements.isRightHandDriving with TomTomSDKCommon.DrivingSide.
  • We are replacing LocationContext.Address with TomTomSDKCommon.Address.
  • We are renaming LocationContext.Road to LocationContext.RoadProperties.
  • We are replacing enum TypeOfRoad in LocationContext with enum TomTomSDKCommon.RoadType.
  • We are re-arranging the order of properties in LocationContext.Road and GeneralRoadElements.isTunnel and tunnelName will be grouped together, as well as isBridge and bridgeName.
  • In GeneralRoadElements, numLanesDrivingDirection and numLanesOppositeDirection will be grouped into a new data class numLanes.

Routing

What is changing?

In TomTomSDKNavigation, we are replacing:

  • Var RouteReplanningEngineOptions.defaultMinTimeDifference with RouteReplanningEngineOptions.Defaults.minTimeDifference.
  • Var RouteReplanningEngineOptions.defaultMinTrafficDelay with RouteReplanningEngineOptions.Defaults.minTrafficDelay.
  • Var RouteReplanningEngineOptions.defaultReplanInterval with RouteReplanningEngineOptions.Defaults.replanInterval.
  • Var RouteReplanningEngineOptions.defaultRouteReplanningPolicy with RouteReplanningEngineOptions.Defaults.routeReplanningPolicy.
  • Var RouteReplanningEngineOptions.defaultRouteUpdateMode with RouteReplanningEngineOptions.Defaults.routeUpdateMode.

In TomTomSDKSafetyCameras:

  • We are replacing the enum MortonTileConstants with MortonTile.Constants.

In TomTomSDKHazards:

  • We are replacing the enum MortonTileConstants with MortonTile.Constants.

Announcing breaking changes: July 25, 2023

Routing

What is changing?

In TomTomSDKCommon we are renaming:

  • Var FormatUtils.minimumDisplayableDuration to FormatUtils.minDisplayableDuration.
  • Func Array.indiciesOfMininal(n:f:) to func indicesOfMin(n:f:).

In TomTomSDKNavigationEngines, we are renaming:

  • Constructor Horizon.Path.init(pathAttributes:parentPathID:offsetOnParentPath:minimumEndOffset:) to constructor Horizon.Path.init(pathAttributes:parentPathID:offsetOnParentPath:minEndOffset:).
  • Var Horizon.Path.minimumEndOffset to Horizon.Path.minEndOffset.

In TomTomSDKNavigation, we are renaming:

  • Constructor RouteReplanningEngineOptions.init(routeUpdateMode:routeReplanInterval:minimalTrafficDelay:minimalTimeDifference:routeReplanningPolicy:) to RouteReplanningEngineOptions.init(routeUpdateMode:routeReplanInterval:minTrafficDelay:minTimeDifference:routeReplanningPolicy:).
  • RouteReplanningEngineOptions.defaultMinimalTimeDifference to var RouteReplanningEngineOptions.defaultMinTimeDifference.
  • Var RouteReplanningEngineOptions.defaultMinimalTrafficDelay to RouteReplanningEngineOptions.defaultMinTrafficDelay.
  • Var RouteReplanningEngineOptions.minimalTimeDifference to RouteReplanningEngineOptions.minTimeDifference.
  • Var RouteReplanningEngineOptions.minimalTrafficDelay to RouteReplanningEngineOptions.minTrafficDelay.

In TomTomSDKSafetyCameras, we are renaming:

  • Var MortonTileConstants.maximumDepthLevel to MortonTileConstants.maxDepthLevel.
  • Var MortonTileConstants.minimumDepthLevel to MortonTileConstants.minDepthLevel.

In TomTomSDKHazards we are renaming:

  • Var MortonTileConstants.maximumDepthLevel to MortonTileConstants.maxDepthLevel.
  • Var MortonTileConstants.minimumDepthLevel to MortonTileConstants.minDepthLevel.

In TomTomSDKTrafficTPEG,we are renaming:

  • Constructor TPEGTrafficClientConfiguration.init(apiKey:initSessionUrl:updateFrequency:innerRadius:outerRadius:maximumNumberOfEvents:trafficCacheEnabled:fileFeedDirectory:fileFeedPattern:webRequestDumpDirectory:) to TPEGTrafficClientConfiguration.init(apiKey:initSessionUrl:updateFrequency:innerRadius:outerRadius:maxNumberOfEvents:trafficCacheEnabled:fileFeedDirectory:fileFeedPattern:webRequestDumpDirectory:).
  • Var TPEGTrafficClientConfiguration.maximumNumberOfEvents to TPEGTrafficClientConfiguration.maxNumberOfEvents.

Announcing breaking changes: July 17, 2023

  • TomTomNavigation refactoring:

What is changing?

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

What do you need to do?

You must change the way Navigation is instantiated. Here are some examples of how you can instantiate for each navigation use case.

Online-only

A new factory is provided in TomTomSDKNavigationOnline that provides sensible defaults for the online navigation use case. All values can be modified, as required. This is demonstrated in the following example for deviationReplanningMode:

1import TomTomSDKNavigation
2import TomTomSDKNavigationOnline
3
4let configuration = OnlineTomTomNavigationFactory.Configuration(
5 locationProvider: DefaultCLLocationProvider(),
6 routeReplanner: RouteReplannerFactory.create(routePlanner: routePlanner),
7 apiKey: "YOUR_API_KEY" ,
8 deviationReplanningMode = DeviationReplanningMode.automatic // example customization
9 )
10
11navigation = OnlineTomTomNavigationFactory.create(configuration: configuration)

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

1let configuration = OnlineTomTomNavigationFactory.Configuration(
2 locationProvider: DefaultCLLocationProvider(),
3 routeReplanner: RouteReplannerFactory.create(routePlanner: routePlanner),
4 navigationTileStore: navigationTileStore, // custom NavigationTileStore
5 deviationReplanningMode = DeviationReplanningMode.automatic // example customization
6 )
7
8navigation = OnlineTomTomNavigationFactory.create(configuration: configuration)

Offline-only

The manual instantiation of DataStoreUpdater is unnecessary as this is now done internally. Automatic offline map updates are still recommended for the initial phase where navigation has not yet started. This allows downloading of missing map regions.

A new factory is provided in TomTomSDKNavigationOffline that provides sensible defaults for the offline navigation use case. All values can be modified as required. This is demonstrated in the following example for deviationReplanningMode:

1import TomTomSDKNavigation
2import TomTomSDKNavigationOffline
3
4let configuration = OfflineTomTomNavigationFactory.Configuration(
5 locationProvider: DefaultCLLocationProvider(),
6 routeReplanner: RouteReplannerFactory.create(routePlanner: routePlanner),
7 ndsStore: ndsStore,
8 deviationReplanningMode = DeviationReplanningMode.automatic // example customization
9 )
10
11navigation = OfflineTomTomNavigationFactory.create(configuration: configuration)

Hybrid

The manual instantiation of DataStoreUpdater is unnecessary as this is now done internally. Automatic offline map updates are still recommended for the initial phase where navigation has not yet started. This allows downloading of missing map regions.

A new factory is provided in TomTomSDKNavigationHybrid that offers sensible defaults for the hybrid navigation use case. All values can be modified, as required. This is demonstrated in the following example for deviationReplanningMode:

1import TomTomSDKNavigation
2import TomTomSDKNavigationHybrid
3
4let configuration = HybridTomTomNavigationFactory.Configuration(
5 locationProvider: DefaultCLLocationProvider(),
6 hybridNavigationDataStore: hybridNavigationDataStore,
7 onlineRoutePlanner: onlineRoutePlanner,
8 offlineRoutePlanner: offlineRoutePlanner,
9 deviationReplanningMode = DeviationReplanningMode.automatic // example customisation
10 )
11
12navigation = HybridTomTomNavigationFactory.create(configuration: configuration)

Routing

What is changing?

  • We are removing isDepartureInstructionRequired from TomTomSDKRoutePlanner.RouteIncrementOptions to align with the API on Android.
  • We are changing the ChargingConnector.plugTypes type from [TomTomSDKCommon.ConnectorType] to Set<TomTomSDKCommon.ConnectorType>.
  • We are changing the ChargingConnector.voltageRange type from Range<Measurement<Foundation.UnitElectricPotentialDifference>> to TomTomSDKCommon.VoltageRange.

Announcing breaking changes: July 12, 2023

General

Minor changes

  • We are adding an arrival side preference option to the Routing section.

Routing

What is changing?

  • We are removing isDepartureInstructionRequired from TomTomSDKRoutePlanner.RouteIncrementOptions to align with the API on Android.

Announcing breaking changes: July 04, 2023

Location

What is changing?

In TomTomSDKLocationTracesRecorder:

  • Func LocationTracesRecorderFactory.createTTPTracesRecorder(navigation:) has parameter 0 type change from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.

What is changing?

In TomTomSDKNavigation:

  • We are removing Protocol EngineActions.
  • We are renaming class Navigation to class DefaultTomTomNavigation.
  • In Constructor Navigation.init(configuration:) we are changing the return type from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.
  • In Constructor Navigation.init(locationProvider:dataSourceSelectionEngine:dataStoreMaintenanceEngine:mapMatchingEngine:routeProgressEngine:guidanceEngine:routeTrackingEngine:arrivalDetectionEngine:locationContextProviderEngine:horizonEngine:routeReplanner:routeReplanningEngine:routeProjectionEngine:routeReplanningRetryPolicy:routeDeviationReplanningRetryPolicy:betterProposalAcceptanceMode:deviationReplanningMode:vehicleProvider:) we are changing the return type from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.
  • In Class Navigation we are removing conformance to EngineActions.

In TomTomSDKNavigationOnline:

  • Func OnlineTomTomNavigationFactory.create(configuration:) we are changing the return type from TomTomSDKNavigation.EngineActions to TomTomSDKNavigation.TomTomNavigation.

In TomTomSDKNavigationUI:

  • Constructor NavigationView.ViewModel.init(_:tts:) we are changing parameter 0 type from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.
  • Constructor NavigationView.ViewModel.init(_:tts:instructionToImageMapper:) we are changing parameter 0 type from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.

In TomTomSDKDataStoreUpdater:

  • Constructor DataStoreUpdater.init(dataStore:locationProvider:navigation:) we are changing parameter 2 type from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.
  • Func DataStoreUpdater.updateNavigation(_:) we are changing parameter 0 type from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.

In TomTomSDKNavigationVisualization:

  • Func NavigationVisualizationFactory.create(map:navigation:styleConfiguration:) we are changing parameter 1 type from TomTomSDKNavigation.Navigation to TomTomSDKNavigation.DefaultTomTomNavigation.

In TomTomSDKNavigationOffline:

  • Func OfflineTomTomNavigationFactory.create(configuration:) we are changing return type from TomTomSDKNavigation.EngineActions to TomTomSDKNavigation.TomTomNavigation.

In TomTomSDKNavigationHybrid:

  • Func HybridTomTomNavigationFactory.create(configuration:) we are changing return type from TomTomSDKNavigation.EngineActions to TomTomSDKNavigation.TomTomNavigation.

Routing

What is changing?

In TomTomSDKCommon:

  • We are renaming ChargingConnector.connectorTypes to ChargingConnector.plugTypes.
  • We are replacing Constructor ChargingConnector.init(currentType:connectorTypes:efficiency:baseLoad:maxPower:) with ChargingConnector.init(currentType:plugTypes:efficiency:baseLoad:maxPower:maxCurrent:maxVoltage:voltageRange:).
  • We are changing ChargingConnector.efficiency type from Foundation.Measurement<TomTomSDKCommon.TTUnitRatio>? to Foundation.Measurement<TomTomSDKCommon.TTUnitRatio>.
  • We are changing ChargingConnector.maxPower type from Foundation.Measurement<UnitPower>? to Foundation.Measurement<UnitPower>.
  • We are changing ChargingConnector.baseLoad type from Foundation.Measurement<UnitPower>? to Foundation.Measurement<UnitPower>.

Announcing breaking changes: June 26, 2023

General

What is changing?

  • We are removing QueryItemConvertible from the public API.
  • In enum VehicleType, we are removing conformance to QueryItemConvertible.

Minor changes

  • We are promoting the following map management APIs to the public preview stage:
    • MapUpdate.Cancellable
    • CompletedMapOperation
    • CurrentMapOperation
    • MapOperation
    • MapOperationType
    • NDSStoreUpdateConfig.backgroundDownloadsEnabled
    • RegionGraphNodeID
    • RegionGraphNodeState
    • RegionGraphChangeEvent
    • RegionGraphObserver
    • NodesStateData
    • StructureData
    • UpdateInfo
    • NDSStore.schedule
    • NDSStore.cancelAllMapOperations
    • NDSStore.findRegionsAroundPosition
    • RegionsAroundPosition
    • CompositeRegionsUpdater
    • CompositeRegionID
    • CompositeRegion
    • CompositeRegionState
    • CompositeRegionStatesData
    • CompositeRegionGraphChangeEvent
    • CompositeRegionObserver
    • CompositeRegionOperation
    • CurrentCompositeRegionOperation
    • GraphChangedData

Search

Minor changes

  • We are removing unused types:
    • AutocompleteMatchType
    • DataSources
    • ChargingAvailabilityDataSource
    • GeometryDataSources
    • POIDetail

What is changing?

  • In TomTomSDKNavigationEngines:
    • We are renaming func RouteTrackingEngine.obtainTrackedRoutes(navigationSnapshot:) to func RouteTrackingEngine.obtainTrackingStates(navigationSnapshot:).
  • In TomTomSDKNavigation:
    • We are renaming func NavKitRouteTrackingEngine.obtainTrackedRoutes(navigationSnapshot:) to RouteTrackingEngine.obtainTrackingStates(navigationSnapshot:).
    • We are renaming func NavigationRouteTrackingStateUpdateObserver.onRouteTrackingStateUpdate(route:routeTrackingState:) to func onRouteTrackingStateUpdate(routeTrackingState:).
    • In func NavigationRouteTrackingStateUpdateObserver.onRouteTrackingStateUpdate(route:routeTrackingState:) we are changing the parameter type from TomTomSDKRoute.Route and TomTomSDKNavigationEngines.RouteTrackingState to TomTomSDKNavigationEngines.RouteTrackingState.

Announcing breaking changes: June 19, 2023

What is changing?

  • We are removing the protocols TileStore, MapDataStore, and HybridDataStore. The affected engines are now taking NavigationTileStore, NDSStore, and HybridNavigationDataStore as parameters.

Routing

What is changing?

  • In TomTomSDKVehicle:
    • We are removing the DefaultVehicleProvider.init() initializer from the public API and replacing it with DefaultVehicleProvider.init(vehicle: Vehicle = Car(combustionEngine: CombustionEngine())).

Announcing breaking changes: June 15, 2023

General

What is changing?

Initializer OfflineHorizonEngine.init(ndsStore:dataSources:) has been renamed to OfflineHorizonEngine.init(ndsStore:dataAdapters:)

Module TomTomSDKHazardsDataSourceOnline has been renamed to TomTomSDKHazardsDataAdapterOnline

Module TomTomSDKNavigationHorizonDataSource has been renamed to TomTomSDKNavigationHorizonDataAdapter

Module TomTomSDKSafetyLocationsDataSourceOnline has been renamed to TomTomSDKSafetyLocationsDataAdapterOnline

Announcing breaking changes: June 13, 2023

Search

What is changing?

  • We are removing the type alias ReverseGeocoderSummary. It is now available under the name ReverseGeocoderResponse.Summary.

Routing

What is changing?

  • In TomTomSDKCommon:
    • enum VehicleError: we are removing the unsupportedModelID case.
  • In TomTomSDKCommon, class DefaultVehicleProvider:
    • We are removing the setVehicle(vehicleType:, vehicleModelID:, vehicleParameters:) method. We added a property var vehicle: Vehicle as a replacement.
  • In TomTomSDKRoutePlannerOnline, we are removing the following from the public API:
    • The AnnouncementUpdater class.
    • The AnnouncementSection enum.
    • The AnnouncementTrigger struct.

Announcing breaking changes: June 5, 2023

What is changing?

Vehicle horizon, map matching, location context, and route projection engine creation require factories instead of using initializers.

The changes are described in the following table:

Old

New

HybridLocationContextProviderEngine()

HybridLocationContextProviderEngineFactory.create()

OnboardLocationContextProviderEngine()

OfflineLocationContextProviderEngineFactory.create()

TileStoreLocationContextProviderEngine()

TileStoreLocationContextProviderEngineFactory.create()

HybridMapMatchingEngine()

HybridMapMatchingEngineFactory.create()

OfflineMapMatchingEngine()

OfflineMapMatchingEngineFactory.create()

OnlineMapMatchingEngine()

TileStoreMapMatchingEngineFactory.create()

HybridRouteProjectionEngine()

HybridRouteProjectionEngineFactory.create()

OfflineRouteProjectionEngine()

OfflineRouteProjectionEngineFactory.create()

OnlineRouteProjectionEngine()

TileStoreRouteProjectionEngineFactory.create()

OfflineHorizonEngine()

OfflineHorizonEngineFactory.create()

Announcing breaking changes: May 30, 2023

Routing

  • In TomTomSDKVehicle:
    • We are removing the DefaultVehicleProvider’s setVehicle(vehicleType: vehicleModelID: vehicleParameters:) method; we are adding the alternative setVehicle(_ vehicle: Vehicle) method.
    • We are removing the modelID case from VehicleUpdateOptions.
  • In TomTomSDKNavigationEngines:
    • RouteWaypointsState:
      • We are removing the initialiser init(nextWaypoint: Waypoint?, numberOfVisitedWaypoints: Int = 0). We are adding init(routePlan: RoutePlan?).
      • We are removing the func reset(waypoints: [Waypoint]). We are adding the func update(newRouteStops: [RouteStop]).
      • We are removing the func markNextWaypointAsVisited(waypoints: [Waypoint]). We are introducing the func markWaypointAsVisited(waypoint: Waypoint).
    • WaypointArrivalStatus:
      • We are removing the hasReachedWaypoint variable. We are adding the state variable with type of WaypointArrivalState.
      • We are changing the waypoint variable type from Waypoint? to Waypoint.
    • ArrivalDetectionEngine:
      • We are changing the hasArrivedAtWaypoint(navigationSnapshot:) func to hasArrivedAtWaypoint(waypoint:navigationSnapshot:).
    • RouteReplanningEngine:
      • We are changing the shouldReplanRoute(:) func to shouldReplanRoute(:navigationSnapshot:).
  • In TomTomSDKNavigation:
    • NavigationEvent.ArrivalEvent:
      • We are removing the didArriveAtWaypoint(Waypoint, Route) case. We are adding the didReachWaypoint(Waypoint, Route) and didVisitWaypoint(Waypoint, Route) cases.
    • NavigationArrivalObserver:
      • We are removing the didArriveAtWaypoint(waypoint: Waypoint, on route: Route) func. We are adding the didReachWaypoint(waypoint: Waypoint, on route: Route) and the didVisitWaypoint(waypoint: Waypoint, on route: Route) funcs.
    • EngineActions:
      • We are adding the markWaypointAsVisited(waypoint: Waypoint) function.

Announcing breaking changes: May 15, 2023

What is changing?

  • NavigationSnapshot is no longer optional.
  • In TomTomSDKNavigation:
    • We are removing the enum Navigation.OptionsError.
    • We are changing the return type for func EngineActions.navigationSnapshot() from TomTomSDKNavigationEngines.NavigationSnapshot? to TomTomSDKNavigationEngines.NavigationSnapshot.
    • We are changing the return type for func Navigation.navigationSnapshot() from TomTomSDKNavigationEngines.NavigationSnapshot? to TomTomSDKNavigationEngines.NavigationSnapshot.

Announcing breaking changes: May 8, 2023

Maps

What is changing?

  • In TomTomSDKAddonNavigationVisualization:
    • We are adding the NavigationVisualizationServiceProtocol.horizonConfiguration property as a protocol requirement.

Announcing breaking changes: May 2, 2023

What is changing?

  • We are removing the locale parameter from the OfflineLocationContextProviderEngine init. Locale is now taken from the navigation snapshot.
  • We are removing the locale parameter from the experimental Hybrid- and OnlineLocationContextProviderEngine init. Locale is now taken from the navigation snapshot.
  • In the TomTomSDKRouteProjectionEngineTileStore, we are renaming the experimental OnlineRouteProjectionEngine to TileStoreRouteProjectionEngine.
  • In the TomTomSDKMapMatchingEngineTileStore, we are renaming the experimental OnlineMapMatchingEngine to TileStoreMapMatchingEngine.
  • We are removing from experimental the feature toggles newNavigationProcessing, useNavigationTileStore, useRouteProjectionEngine and standaloneRouteTrackingEngine. These features are now moved to Public Preview.

Routing

What is changing?

  • In TomTomSDKVehicle:
    • We are renaming VehicleParameter enum’s case vehicleWeight to weight.
    • We are renaming VehicleUpdateOption enum’s case vehicleType to type, case vehicleWeight to weight.

Announcing breaking changes: April 24, 2023

Minor changes

  • In NavigationEngines:
    • We are changing the HorizonOptions ID parameter from UUID to Int.

Routing

  • In TomTomSDKNavigation:
    • NavigationRouteObserver changes: we are removing the didActiveRouteChange(routes:reason:) method. Active route changes are now handled with the didReplanRoute(replannedRoute:reason:).
  • We are adding VehicleError.invalidVehicleParameter.
  • DefaultVehicleProvider.setVehicle may now throw a VehicleError.invalidVehicleParameter error.
  • DefaultVehicleProvider.updateVehicleState may now throw a VehicleError.invalidVehicleParameter error.

Announcing breaking changes: April 10, 2023

Minor changes

  • In the TomTomSDKAddonNavigationVisualization module, we are introducing a new LinePatternDisplay type.

Routing

What is changing?

  • The VehicleProvider.registerVehicleUpdateObserver now throws VehicleError.alreadyRegisteredObserver instead of VehicleError.invalidVehicleSnapshot.
  • We are renaming the VehicleError.modelIDSupportError(String) to unsupportedModelID(String) to align error case naming.
  • We are adding VehicleError.alreadyRegisteredObserver.
  • We are changing the onActiveRouteChange signature. This change affects the following modules:
    • TomTomSDKNavigation
    • TomTomSDKNavigationUI
    • TomTomSDKAddonNavigationVisualization

Announcing breaking changes: April 3, 2023

General

What is changing?

  • In TomTomSDKVehicle (preparation for long distance EV route support):
    • Motorized protocol: We are changing the modelId property type from String? to VehicleModelID?
    • DefaultVehicleProvider class: We are adding the vehicleModelID parameter to the setVehicle function.

Maps

Minor changes

  • In TomTomSDKMapDisplay:
    • In LineOptions.PatternAppearance we are adding a new patternTexture property of the type UIImage.

What is changing?

  • In TomTomSDKNavigation (Catching up with Android SDK for decision point navigation for a better route proposal):
    • We are extending NavigationRouteObserver with the following:
      • func didActiveRouteChange(routes: [Route], reason: RouteReplanningReason)
      • func didChangeRoutes(navigatedRoutes: NavigatedRoutes)

Announcing breaking changes: March 27, 2023

  • What is changing?
  • In TomTomSDKNavigationEngines, we are renaming the DataSourceSelectionEngine.process() function to process(navigationSnapshot:) function.

Announcing breaking changes: March 20, 2023

Maps

Minor changes

  • In TomTomSDKMapDisplay:
    • We are changing RouteOptions.destination from a computed property to a stored property.

What is changing?

  • In TomTomSDKAddonNavigationVisualization:
    • The StyleConfiguration.init(route:routeTraffic:) constructor has a new destinationConnectionLine property of the type DestinationConnectionLineStyle.

Minor changes

  • In TomTomSDKAddonNavigationVisualization:
    • We are introducing a new DestinationConnectionLineStyle type.

Announcing breaking changes: March 13, 2023

Maps

What is changing?

  • In TomTomSDKMapDisplay we are renaming the LineOptions.PatternAppearance.patternTextureIcon var to patternTexture.

Routing

What is changing?

  • We are renaming ContinuousReplanningMode to BetterProposalAcceptanceMode. We are adding the Unreachable only mode and removing the None mode.

What is changing?

  • TomTomSDKAddonNavigationVisualization:
    • In the MagnitudeOfDelayStyle initializer we are renaming the linePatternTextureIcon parameter to linePatternTexture.

Minor changes

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

Announcing breaking changes: March 6, 2023

General

What is changing?

  • We are removing TomTomSDKLocationProvider.DefaultCLLocationProvider.init(locationValidationPolicy: TomTomSDKLocationProvider.LocationUpdateValidator? = nil, observationHandler: TomTomSDKCommon.Observable) from the public API.
  • We are removing the rawValue API from the TomTomSDKCommon enums (the rawValue is an implementation detail and the user application code depends on it). The following enums are affected:
    • ADRTunnelRestrictionCode
    • Category
    • CauseCode
    • DrivingSide
    • EffectCode
    • EngineType
    • Geometry
    • RoadClass
    • RoadSubClass
    • RoadType
    • VehicleLoadType
    • WarningLevel

Maps

What is changing?

  • In TomTomSDKMapDisplay, we are renaming the OnTrafficIncidentObservable protocol to TrafficIncidentObserver.
  • We are removing the rawValue API from the TomTomSDKAddonNavigationVisualization enums (the rawValue is an implementation detail and the user application code depends on it). The following enum is affected:
    • TrafficIncidentCategory

Search

What is changing?

  • We are converting SearchOptions.resultTypes from [SearchResultType] to Set<SearchResultType>.
  • We are removing the rawValue API from TomTomSDKStructuredSearch enums (the rawValue is an implementation detail and the user application code should depend on it). The affected enum is:
    • StructuredSearchError
  • We are removing the StandardCategoryID.unknown enum case from TomTomSDKSearch.
  • We are moving SearchError from TomTomSDKSearch to TomTomSDKSearchOffline.
  • In DynamicData, we are replacing CurrencyCode with a String.
  • In DynamicData, we are renaming FuelPricePerUnit to FuelPrice.
  • We are converting FuelPricePerUnit.volumeUnit from String to UnitVolume.
  • In DynamicData, we are renaming FuelPrice to FuelPriceDetails.
  • We are wrapping fuelPriceID (String) into a DynamicData.FuelPriceResponse struct .
  • The geometry of searchAreas is changing from protocol to enum.
  • In SearchResult.fuelPriceDataSourceID we are changing the type from String to FuelPriceID.
  • In SearchResult.evConnectorAvailabilityDataSourceID we are changing the type from String to EVChargingAvailabilityID.
  • In SearchResult.parkingDetailID we are changing the type from String to ParkingDetailID.
  • In TomTomSDKDynamicData:
    • We are removing the Availability.init(current:perPowerLevel:) constructor .
    • We are removing the EVChargingAvailabilityResponse.init(connectors:availabilityID:) constructor.
    • We are removing the CurrentStatus struct.
    • We are removing the Availability.current var.
    • We are removing the Availability.perPowerLevel var.
    • We are renaming the Connector struct to ConnectorAvailability.
    • We are changing the return type in the Connector.type.Get() accessor from Swift.String to TomTomSDKCommon.ConnectorType.
    • We are changing the return type in the EVChargingAvailabilityOptions.availabilityID.Get() accessor from Swift.String to TomTomSDKDynamicData.EVChargingAvailabilityID.
    • We are changing the return type in the EVChargingAvailabilityResponse.availabilityID.Get() accessor from Swift.String to TomTomSDKDynamicData.EVChargingAvailabilityID.
    • We are changing the return type in the EVChargingAvailabilityResponse.connectors.Get() accessor from [TomTomSDKDynamicData.Connector] to [TomTomSDKDynamicData.ConnectorAvailability].
    • We are changing the parameter 0 type in the Connector.init(type:total:availability:) constructor from Swift.String to TomTomSDKCommon.ConnectorType.
    • We are changing the return type in the Connector.init(type:total:availability:) constructor from TomTomSDKDynamicData.Connector to TomTomSDKDynamicData.ConnectorAvailability.
    • We are changing the parameter 0 type in the EVChargingAvailabilityOptions.init(availabilityID:connectors:minPower:maxPower:) constructor from Swift.String to TomTomSDKDynamicData.EVChargingAvailabilityID.
    • We are changing the declared type in the Connector.type var from Swift.String to TomTomSDKCommon.ConnectorType.
    • We are changing the declared type in the EVChargingAvailabilityOptions.availabilityID var from Swift.String to TomTomSDKDynamicData.EVChargingAvailabilityID.
    • We are changing the declared type in the EVChargingAvailabilityResponse.availabilityID var from Swift.String to TomTomSDKDynamicData.EVChargingAvailabilityID.
    • We are changing the declared type in the EVChargingAvailabilityResponse.connectors var from [TomTomSDKDynamicData.Connector] to [TomTomSDKDynamicData.ConnectorAvailability].

Routing

What is changing?

  • In TomTomSDKRoute:
    • We are removing the Route.getLineSegmentNr(preIndex:distanceAlongRoute:) func.
    • We are removing the Route.segmentDistances var.
  • We are removing the rawValue API from the TomTomSDKRoute enums (the rawValue is an implementation detail and user application code depends on it). The following enums are affected:
    • AnnouncementPoints
    • InstructionPhoneticsType
    • InstructionType
    • RoadShieldReferences

What is changing?

  • In the NavigationView.ViewModel, we marked the locale property private and removed it from NavigationTextToSpeechService.
  • We are removing the rawValue API from TomTomSDKNavigationEngines enums (the rawValue is an implementation detail and the user application code depends on it). The affected enums are:
    • ProjectedRouteSection.Boundary
    • RoutePlanChangeReason
    • TypeOfRoad
  • We are removing the rawValue API from TomTomSDKNavigation enums. The affected enums are:
    • NavigationProcessingError
    • NavigationStartError

Announcing breaking changes: February 27, 2023

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-2 country code string to OnlineSearch.init() and OnlineReverseGeocoder.init().
  • We are moving entryPoints from POI to Place.

Routing

What is changing?

  • We are removing ConsumptionModel because it is unused.
  • In Range, we are adding support for different representations for the boundary; we now have a RangeBoundary interface instead of having a vector of coordinates. It is being implemented by a polygon class.
  • We are reordering RangeCalculationOptions properties to align with Android.
  • The vehicle type in RangeCalculationOptions / RoutePlanningOptions is now non-optional and defaults to VehicleType.car.
  • The engine efficiencies of the consumption model are now represented as TTUnitRatio instead of Double so it aligns with Android.
  • RouteReplanningResult is now returning a list of Routes(active route and alternatives).

What is changing?

  • We are removing:
    • The message and messagePhonetics parameters from GuidanceAnnouncement.
    • The Direction description() func.
    • The Direction.direction(from:) func.
    • The Direction.encode(to:) func.
    • The LaneSeparator.description() func.
    • The LaneSeparator.laneSeparator(from:) func.
  • In the Direction enum we are removing conformance to Decodable.
  • In the Direction enum we are removing conformance to Encodable.

Announcing breaking changes: February 20, 2023

Maps

What is changing?

  • In TomTomSDKMapDisplayDataProviderOffline module: We are replacing MapDisplayDataProvider.isOfflineTileDataProvider() method with a computed property.
  • In AutocompleteOptions, we are making the limit non-optional. The default value = 5.
  • We are changing Struct MapGestureDisableOption to an Enum.
  • We are replacing the following:
    • Func MapGestureDisableOption.doubleTap() with the .doubleTap enum case.
    • Func MapGestureDisableOption.doubleTapAndPan() with the .doubleTapAndPan enum case.
    • Func MapGestureDisableOption.longPress() with the .doubleTapAndPan enum case.
    • Func MapGestureDisableOption.none() with the .none enum case.
    • Func MapGestureDisableOption.pan() with the .pan enum case.
    • Func MapGestureDisableOption.pinch() with the .pinch enum case.
    • Func MapGestureDisableOption.rotate() with the .rotate enum case.
    • Func MapGestureDisableOption.tap() with the .tap enum case.
    • Func MapGestureDisableOption.tilt() with the .tilt enum case.
    • Func MapGestureDisableOption.twoFingerTap() with the .twoFingerTap enum case.
  • In Property TomTomMap.disabledGestures we are changing the return type from TomTomSDKMapDisplay.MapGestureDisableOption to [TomTomSDKMapDisplay.MapGestureDisableOption].
  • We are removing the following:
    • Func CameraActions.addCameraEventObserver(_:).
    • Func CameraActions.removeCameraEventObserver(_:).
    • Func MapDelegate.map(_:didChangeCameraProperties:).
    • Func MapDelegate.map(_:didChangeCameraTrackingMode:).
    • Func MapDelegate.map(_:didDoubleTapOn:).
    • Func MapDelegate.map(_:didLongPressOn:).
    • Func MapDelegate.map(_:didSteadyCamera:).
    • Func MapDelegate.map(_:didTapOn:).
    • Func MapDelegate.map(_:didTapOnAnnotation:onCoordinate:).
    • Func MapDelegate.map(_:didTapOnCurrentLocation:).
    • Func MapDelegate.map(_:onInteraction:).
    • Func MapDelegate.mapDidTapOnRecenterButton(_:).
    • Protocol CameraEventObservable.
  • In TomTomSDKMapDisplayDataProviderOffline:
    • We are changing the return type in Func OfflineTileDataProviderFactory.createOfflineTileDataProvider(store:) from TomTomSDKMapDisplay.MapDisplayDataProvider to TomTomSDKMapDisplay.MapDisplayDataProvider?.

Map delegate will be:

public protocol MapDelegate: AnyObject { /// Method for reporting states for an interaction with the map. /// - Parameter map: The instance of the Map where the event occurred. /// - Parameter interaction: The interaction func map(_ map: TomTomMap, onInteraction interaction: MapInteraction)

/// Method for reporting states for an interaction with the map. /// - Parameter map: The instance of the Map where the event occurred. /// - Parameter event: The interaction func map(_ map: TomTomMap, onCameraEvent event: CameraEvent) }

Minor changes

  • Within Struct LineOptions we are adding the following new properties:
    • patternTextureURI
    • patternTextureIcon

Search

What is changing?

  • We are removing FuelName and replacing it with FuelType in the DynamicData module.

Minor changes

  • In TomTomSDKAddonNavigationVisualization:
    • We are adding the optional patternTextureStyles property to the Constructor RouteTrafficIncidentStyle.init(lineWidths:outlineWidths:lineStartCapType:lineEndCapType:lineJointType:markerLabelFontURL:markerLabelTextSize:markerLabelOutlineWidth:markerLabelTextOffset:markerLabelTextAnchoring:markerVisibilityByCategory:magnitudeOfDelayStyles:patternTextureStyles:).

Announcing breaking changes: February 13, 2023

Maps

What is changing?

  • We are replacing NDSStore.init: keystorePassword with accessPermit: .keystorePassword(String).

What is changing?

  • In TomTomSDKNavigationEngines we are removing the following:
    • Constructor DestinationArrivalStatus.init(hasArrived:).
    • Constructor WaypointArrivalStatus.init(hasArrived:routeStopID:).
    • Var DestinationArrivalStatus.hasArrived.
    • Var WaypointArrivalStatus.hasArrived.
    • Var WaypointArrivalStatus.routeStopID.
    • Func LocationContextProviderEngine.detectLocationContext(navigationSnapshot:).
  • In TomTomSDKNavigationEngines we are adding the protocol:
    • Func LocationContextProviderEngine.provideLocationContext(navigationSnapshot:).
  • In TomTomSDKNavigationEngines.MapMatchingEngine:
    • We are making return type non-optional in func extrapolateLocation(navigationSnapshot: NavigationSnapshot) throws > MapMatchingResult?.
    • We are removing base type from enum TomTomSDKNavigation.NavigationProcessingError.
    • We are removing base type from enum TomTomSDKNavigation.NavigationStartError.
    • We are removing base type from enum TomTomSDKNavigationEngines.TypeOfRoad.
  • In TomTomSDKNavigationEngines.TypeOfRoad:
    • We are replacing func description() > String with var description: String
  • In TomTomSDKAddonNavigationVisualization we are adding the following as protocol requirements:
    • Func NavigationVisualizationServiceProtocol.hideTrafficIncidents().
    • Func NavigationVisualizationServiceProtocol.showTrafficIncidents().

Announcing breaking changes: February 6, 2023

General

What is changing?

  • We are removing the raw type from ConnectorType.
  • We are removing the raw type from CurrentType.

Maps

What is changing?

  • We are removing EventSubscriber from the public API.
  • We are replacing cameraEventSubscriber with addCameraEventObserver(CameraEventObservable) and removeCameraEventObserver(CameraEventObservable).
  • We are removing:
    • MapTileDataProviding
    • MapDisplayOnboardTileDataProvider
    • OnboardDataProvider

Minor changes

  • We are renaming OnboardStyleURLProvider to OfflineStyleURLProvider.

Search

What is changing?

  • We are removing FuelName. We are extending and using FuelType for dynamic POI data (fuel price).
  • We are removing geopoliticalView from SearchOptions.
  • We are using geopoliticalView for construction of OnlineSearch, OfflineSearch, and HybridSearch.
  • We are removing the TimeRange struct from Search APIs.
  • We are renaming maxDetourTime to maxDetourDuration, and it is now optional.
  • We are changing Connector.type from String to a ConnectorType enum in DynamicData.
  • We are renaming EntityType enum to AreaType in ReverseGeocoder.
  • We are removing Codable, Decodable, and Encodable from Availability, Connector, and Current.
  • We are removing EVChargingStationsAvailabilityQuery, EVChargingStationsAvailabilityQueryBuilder, and EVChargingStationsAvailabilityResponse from the Search API. The Charging Stations API is now part of DynamicData.
  • We are renaming Current.powerKW to Current.power and changing its type to Measurement.
  • We are converting EntryPoint.type from String to enum.
  • We are converting SearchResultType from struct to enumGeometryModel.
  • We are removing the following types from TomTomSDKSearchOnline:
    • GeometryModel
    • GeometryModelConvertible
    • RoutePoints
    • SearchGeometry
    • SearchGeometryModel
    • SearchShapeType
    • SearchCircle
    • SearchShape
    • SearchGeometry
    • SearchGeometryModel
    • SearchPolygon
  • We are removing SDKSearchErrorDomain from TomTomSDKSearch.

Minor changes

  • OnlineSearch, HybridSearch, OnlineReverseGeocoder, HybridReverseGeocoder have a new parameter apiUrl: URL in their initializer list.
  • We are moving ReverseGeocoderSummary inside ReverseGeocoderResponse and renaming it. We are providing typealiases.
  • We are moving AutocompleteSummary, AutocompleteGeoBias, AutocompleteResult, AutocompleteMatchType, AutocompleteSegment, AutocompleteMatches, and AutocompleteInputQuery inside AutocompleteResponse and renaming it. The previous type names will still be available.
  • We are moving SearchRequestSummary inside SearchResponse and renaming it. We are providing typealiases.

Routing

Minor changes

We are removing the SupportingPoints TypeAlias from TomTomSDKRoutePlanner.

What is changing?

  • We are replacing the language parameter type String with Locale for the following:
    • NavigationEngines
    • TextToSpeech
    • OnlineRouting
  • We are renaming the language parameter to locale.
  • We are removing the RoundaboutDirection enum.
  • We are making the property quantizedTurnAngle non-optional for guidance instructions.
  • We are adding support for manual announcements.
  • We are removing the keepLeft and keepRight values from TurnDirection.
  • We are making Maneuver type internal.

Announcing breaking changes: January 30, 2023

Maps

What is changing?

  • We are removing the HTTPFramework from the public API.
  • We are removing the HTTPInterceptorDelegate protocol from the public API.
  • The following are now a regular class:
    • Line
    • Circle
    • Marker
    • Route
    • Polygon
    • Layer
    • Style
    • TomTomMap
    • PolygonOverlay protocol
  • The following no longer conform to AnyObject:
    • Line
    • Circle
    • Marker
    • Route
    • Polygon
    • Layer
    • Style
    • TomTomMap
    • PolygonOverlay
  • We are removing the following classes:
    • ApplicationLifecycleMonitor
    • MapPolygonOverlay
    • SceneLifecycleMonitor
  • We are removing the enum CameraUpdate.Builder.
  • We are removing the following protocols:
    • AppUIInstanceStateObservable
    • ApplicationLifecycleMonitoring
  • We are removing MapView.appLifecycleMonitor.
  • We are renaming MapOptions.mapKey to MapOptions.apiKey.
  • We are replacing MapTileOptions.x, MapTileOptions.y with point: CGPoint.
  • We are renaming MapView.mapReady to MapView.onMapReadyCallback.
  • We are renaming Struct RenderedFeatureQuery to Struct RenderedFeatureQueryOptions.
  • We are renaming Route.progressOnRouteMeters to Var progressOnRoute. We are changing the return type from Swift.Double to Foundation.Measurement<Foundation.UnitLength>.
  • We are removing the following from the public API:
    • SourceCollection.init(from:)
    • TrafficIconCategory.init(rawValue:)
    • TrafficIncident.init(from:)
    • TrafficMagnitude.init(rawValue:)
  • TomTomMap.setMarkerDistanceFadingRange(range:) changes parameter type from Swift.ClosedRange<Swift.Int> to Swift.ClosedRange<Foundation.Measurement<Foundation.UnitLength>>.
  • TomTomMap.setMarkerDistanceShrinkingRange(range:) changes parameter type from Swift.ClosedRange<Swift.Int> to Swift.ClosedRange<Foundation.Measurement<Foundation.UnitLength>>.
  • OnDiskCachePolicy.cache updated the type of the associated value duration from TimeInterval to Measurement<UnitDuration>.

Minor changes

  • We are adding the getHillShadingTiles(mapOptions: MapOption) function to the MapTileDataProviding protocol.

Announcing breaking changes: January 23, 2023

Search

What is changing?

  • PoiDetailsResponse returns PoiDetails instead of SearchResult.
  • limit in AutoCompleteOptions now has a non-optional default value of 5.
  • The searchAreas property in SearchOptions is now a set.
  • We are removing shouldFetchDetourOffset in SearchOptions. Detour offset will always be returned when applicable.
  • SearchOptions now has two constructors for each of the two scenarios, fuzzy search and search-along-the-route.
  • We are removing the POIID constructor that accepts a SearchResultID.
  • We are removing fuelTypes from POI.
  • We are grouping detour information into a Detour class in SearchResult.
  • We are using TomTomSDKCommon.Place in SearchResult instead of address and position.
  • The strings for AutocompleteSegment will be either a Brand object, a Category object, or plain text.
  • We are converting collections with unique elements in POI to sets instead of arrays.
  • enums in SortOrder now have a "by" prefix, e.g., byDetourTime.
  • We are removing offset from SearchRequestSummary.
  • We are renaming the following:
    • openingHours to openingHoursMode in SearchOptions.
    • countries to countryCodes in SearchOptions.
    • resultTypeSet to resultTypes in SearchOptions.
    • categories to categoryIDs in SearchOptions.
    • identifiers to geometryIDs in GeometryDataOptions.
    • zoom to geometryZoom in GeometryDataOptions.
    • id to searchResultId in SearchResult.
    • geoPoliticalView to geopoliticalView in SearchOptions.
    • GeoPoliticalView to GeopoliticalView.
    • SearchRequestSummary to SearchSummary.
  • We are removing numResults from all classes ending with Summary.
  • We are replacing ClosedRange<Date> with DateInterval in TomTomSDKSearch.OpeningHours.
  • We are changing the return type of the PlaceMatch.speedLimit.Get() accessor from Swift.String? to Foundation.Measurement<Foundation.UnitSpeed>?.
  • We are changing the declared type in the PlaceMatch.speedLimit var from Swift.String? to Foundation.Measurement<Foundation.UnitSpeed>?

Minor changes

  • We are changing the SearchResult.detourOffset type from Int to Measurement<UnitLength>.

Routing

What is changing?

In TomTomSDKRoutePlannerOffline we are removing:

  • Enum OnboardInstructionError.
  • Enum OnboardRouteConverterError.
  • Func CarTrainSection.convertToGoSDKSection(routePoints:).
  • Func CarpoolSection.convertToGoSDKSection(routePoints:).
  • Func CountrySection.convertToGoSDKSection(routePoints:).
  • Func FerrySection.convertToGoSDKSection(routePoints:).
  • Func MotorwaySection.convertToGoSDKSection(routePoints:).
  • Func PedestrianSection.convertToGoSDKSection(routePoints:).
  • Func TollRoadSection.convertToGoSDKSection(routePoints:).
  • Func TollVignetteSection.convertToGoSDKSection(routePoints:).
  • Func TrafficSection.convertToGoSDKSection(routePoints:).
  • Func TravelModeSection.convertToGoSDKSection(routePoints:).
  • Func TunnelSection.convertToGoSDKSection(routePoints:).
  • Func UnpavedSection.convertToGoSDKSection(routePoints:).
  • Func UrbanSection.convertToGoSDKSection(routePoints:).
  • Struct RoutingArcInfo.

What is changing?

  • We are moving the public interfaces of navigation engines to a new module TomTomSDKNavigationEngines.
  • We are renaming the existing module TomTomSDKNavigationEngine to TomTomSDKNavigation.
  • We are removing the didGenerateNextPrediction(predictions:) method of NavigationMapMatchingObserver protocol.
  • We are replacing the didMapMatchLocation(location: TomTomSDKLocationProvider.GeoLocation) method of the NavigationMapMatchingObserver protocol with the didMapMatchLocation(location: TomTomSDKNavigationEngine.MapMatchingResult) method.
  • We are changing the associated value type from TomTomSDKLocationProvider.GeoLocation to TomTomSDKNavigationEngine.MapMatchingResult for the didMapMatchLocation enum case of the NavigationEvent.MapMatchingEvent enum.
  • We are replacing NavigationConfigurationBuilder on the NavigationConfiguration struct.

Announcing breaking changes: January 16, 2023

Maps

What is changing?

  • We are removing the public initializers of the following TomTomSDKDataManagementOffline types:
    • CompletedMapOperation
    • CurrentMapOperation
    • RegionGraph
    • RegionGraphNode
    • RegionGraphNodeState

Routing

What is changing?

Within TomTomSDKRoutePlannerOnline:

  • We are removing the following classes:
    • BatchReachableRangeQuery
    • BatchRoutingQuery
    • ReachableRangeQuery
    • RoutingQuery
  • We are removing RoutingError.init(from:).
  • We are removing the following enums:
    • OnlineInstructionError
    • RoutingErrorCode
  • We are removing the following protocols:
    • Query
    • QueryBuilder
  • We are removing the following structs:
    • LatLngBounds
    • OptimizedWaypoint
    • Rectangles
    • Response
    • RoadShieldReference
  • We are removing the RoutingError.message var.
  • We are changing the RoutingError class to a struct.
  • We are changing the return type for the RoutingError.code.Get() accessor from TomTomSDKRoutePlannerOnline.RoutingErrorCode to TomTomSDKRoutePlannerOnline.RoutingError.Code.
  • We are changing the declared type of the RoutingError.code var from TomTomSDKRoutePlannerOnline.RoutingErrorCode to TomTomSDKRoutePlannerOnline.RoutingError.Code.
  • We are removing conformance of`RoutingError` to decodable.

What is changing?

  • We are removing Route Instruction Builders from the public API.
  • We are removing the property travelTime from Route Instruction.

Announcing breaking changes: January 9, 2023

Maps

What is changing?

In TomTomSDKMapDisplay:

  • We are removing the RouteOptions.init(segments:) constructor.
  • We are removing the RouteSegment struct.
  • We are removing the RouteOptions.segments var.
  • We are adding a RouteOptions.init(coordinates: [CLLocationCoordinate2D], sections: [RouteSection]) constructor.

Search

What is changing?

In the reverse geocoder:

  • We are renaming the supportedRoadUses attribute in ReverseGeocoderOptions to roadUses.
  • We are renaming supportedEntityTypes in ReverseGeocoderOptions to entityTypes.
  • We are renaming supportedMapCodeTypes in ReverseGeocoderOptions to mapCodeTypes.
  • We are renaming shouldFetchGeometry in ReverseGeocoderOptions to fetchGeometry.
  • The EntityType enumeration won’t have a base type.
  • We are reusing Geometry from the TomTomSDKCommon module instead of defining a GeoGeometry type in the reverse geocoder module.
  • The MatchType enumeration won’t have a base type.
  • We will now represent the speed limit by Measurement<UnitSpeed>.
  • We are using set for roaduse in PlaceMatch.
  • We are reusing GeoBoundingBox from TomTomSDKCommon in the reverse geocoder.
  • We are removing numResults from ReverseGeocoderSummary.
  • We are removing map code from the reverse geocoder.

Minor changes

  • We are changing SearchOptions.sessionId to sessionID.
  • In the reverse geocoder:
    • We are setting ReverseGeocoderOptions.locale to the default locale.

Routing

What is changing?

TomTomSDKRoutePlanner:

  • We are removing the following constructors:
    • AlternativeType.init(rawValue:)
    • AvoidType.init(rawValue:)
    • ExtendedRouteRepresentation.init(rawValue:)
    • Hilliness.init(rawValue:)
    • RouteRepresentation.init(rawValue:)
    • SectionType.init(rawValue:)
    • WaypointOptimization.init(rawValue:)
    • Windingness.init(rawValue:)
  • We are removing the Array.queryItems(key:) func.
  • We are removing the following TypeAlias’s:
    • AlternativeType.RawValue
    • AvoidType.RawValue
    • ExtendedRouteRepresentation.RawValue
    • Hilliness.RawValue
    • RouteRepresentation.RawValue
    • SectionType.RawValue
    • WaypointOptimization.RawValue
    • Windingness.RawValue
  • We are removing the following vars:
    • AlternativeType.rawValue
    • AvoidType.rawValue
    • ExtendedRouteRepresentation.rawValue
    • Hilliness.rawValue
    • RouteRepresentation.rawValue
    • SectionType.rawValue
    • WaypointOptimization.rawValue
    • Windingness.rawValue
    • We are changing QueryOptions.trackingId to Var trackingID.
  • We are removing conformance of the AvoidType enums to:
    • Decodable
    • Encodable
    • RawRepresentable
  • We are removing conformance to RawRepresentable from the following enums:
    • AlternativeType
    • AvoidType
    • ExtendedRouteRepresentation
    • Hilliness
    • RouteRepresentation
    • RouteType
    • SectionType
    • WaypointOptimization
    • Windingness

The following changes to AvoidOptions are being made:

Name

Type

What is changing

From

To

AvoidOptions.avoidAreas.Get()

accessor

return type

Swift.Set<TomTomSDKCommon.BoundingBox>?

Swift.Set<TomTomSDKCommon.BoundingBox>

AvoidOptions.avoidAreas.Set()

accessor

parameter 0 type

Swift.Set<TomTomSDKCommon.BoundingBox>?

Swift.Set<TomTomSDKCommon.BoundingBox>

AvoidOptions.avoids.Get()

accessor

return type

Swift.Set<TomTomSDKRoutePlanner.AvoidType>?

Swift.Set<TomTomSDKRoutePlanner.AvoidType>

AvoidOptions.avoids.Set()

accessor

parameter 0 type

Swift.Set<TomTomSDKRoutePlanner.AvoidType>?

Swift.Set<TomTomSDKRoutePlanner.AvoidType>

AvoidOptions.init(avoids:vignette:avoidAreas:)

constructor

parameter 0 type

Swift.Set<TomTomSDKRoutePlanner.AvoidType>?

Swift.Set<TomTomSDKRoutePlanner.AvoidType>

AvoidOptions.init(avoids:vignette:avoidAreas:)

constructor

parameter 2 type

Swift.Set<TomTomSDKCommon.BoundingBox>?

Swift.Set<TomTomSDKCommon.BoundingBox>

AvoidOptions.avoidAreas

var

declared type

Swift.Set<TomTomSDKCommon.BoundingBox>?

Swift.Set<TomTomSDKCommon.BoundingBox>

AvoidOptions.avoids

var

declared type

Swift.Set<TomTomSDKRoutePlanner.AvoidType>?

Swift.Set<TomTomSDKRoutePlanner.AvoidType>

TomTomSDKRoutePlannerOnline:

  • Extension Array removing conformance to QueryItemArrayConvertable.
  • Func Array.queryItem(key:) is being removed from the public API.

TomTomSDKNavigation:

  • Extension Array removing conformance to QueryItemArrayConvertable.

Announcing breaking changes: January 2, 2023

General

What is changing?

TomTomSDKFeatureToggle:

  • Func FeatureToggleControllerProtocol.disable(feature:) has a generic signature change from <Self where Self : TomTomSDKFeatureToggle.FeatureToggleControllerProtocol> to <Self where Self : TomTomSDKFeatureToggle.FeatureToggleController>.
  • Func FeatureToggleControllerProtocol.enable(feature:) has a generic signature change from <Self where Self : TomTomSDKFeatureToggle.FeatureToggleControllerProtocol> to <Self where Self : TomTomSDKFeatureToggle.FeatureToggleController>.
  • Func FeatureToggleControllerProtocol.isEnabled(feature:) has a generic signature change from <Self where Self : TomTomSDKFeatureToggle.FeatureToggleControllerProtocol> to <Self where Self : TomTomSDKFeatureToggle.FeatureToggleController>.
  • We are removing Constructor RuntimeFeatureType.init(rawValue:).
  • We are removing EnumElement RuntimeFeatureType.newGestureInteraction.
  • We are removing TypeAlias RuntimeFeatureType.RawValue.
  • We are removing Var RuntimeFeatureType.rawValue.
  • We are renaming Protocol FeatureToggleControllerProtocol to Protocol FeatureToggleController.
  • Accessor FeatureToggle.shared.Get() has a return type change from TomTomSDKFeatureToggle.FeatureToggleControllerProtocol to TomTomSDKFeatureToggle.FeatureToggleController.
  • Var FeatureToggle.shared has a declared type change from TomTomSDKFeatureToggle.FeatureToggleControllerProtocol to TomTomSDKFeatureToggle.FeatureToggleController.
  • Class FeatureToggle has removed conformance to FeatureToggleControllerProtocol.
  • Enum RuntimeFeatureType has removed conformance to RawRepresentable.

What is changing?

  • TomTomSDKRouteReplanner.RouteReplanner protocol is changing:
    • method func update(_ options: RouteUpdateOptions) async throws > [Route] is changing to func update(_ options: RouteUpdateOptions)` > AsyncThrowingStream<Route, Error>.
    • method func backToRoute(_ options: BackToRouteOptions) async throws > [Route] is changing to func backToRoute(_ options: BackToRouteOptions) > AsyncThrowingStream<Route, Error>.
  • Implementations of protocol TomTomSDKRouteReplannerHybrid.HybridRouteReplanner and TomTomSDKRouteReplannerDefault.DefaultRouteReplanner are changing respectively.

Announcing breaking changes: December 27, 2022

General

What is changing?

  • We are renaming UnitsSystem.distanceFormatted(valueInMeters:) to distanceFormatted(value:)
  • We are removing GeoJSONPosition.init(from:)
  • We are removing GeoJSONPosition.encode(to:)
  • We are making the following internal:
    • Initializer Geometry.init(type:coordinates:)
    • Var GeoJSON.exteriorRing
    • Var GeoJSON.internalRings
  • Struct GeoJSONPosition has removed conformance to Decodable
  • Struct GeoJSONPosition has removed conformance to Encodable

Maps

What is changing?

  • We are replacing initializer RouteInstruction.init(distanceAlongRouteMeters:lengthInMeters:combineWithNext:pointIndex:) with RouteInstruction.init(distanceAlongRoute:length:combineWithNext:pointIndex:)
  • We are renaming property RouteOptions.reachableDistanceInMeters to reachableDistance

Search

What is changing?

  • We are renaming searchResult.id.parkingAvailabilityDataSourceId to parkingDetailD in TomTomSDKSearch.SearchResult
  • Moving EV Charging AvailabilityAPI from Hybrid and Search modules to Dynamic Data module:
    • We are removing in TomTomSDKSearch: Search.requestEvChargingStationsAvailability(query:completion:) method
    • We are removing in TomTomSDKSearchOnline: OnlineSearch.requestEvChargingStationsAvailability(query:completion:) method
    • We are removing TomTomSDKSearchOffline: Func OfflineSearch.requestEvChargingStationsAvailability(query:completion:)
    • We are removing TomTomSDKSearchHybrid: Func HybridSearch.requestEvChargingStationsAvailability(query:completion:)

What is changing?

  • We are moving EVChargingAvailability API from HybridSearch and Hybrid Search to Dynamic Data module
  • We are removing travelTime from guidance instructions
  • We are renaming DefaultSimpleEngineCommonCalculator.calculateProgressOnRoute(location:route:distanceThreshInMeters:lastDistanceAlongRoute:) to calculateProgressOnRoute(location:route:distanceThreshold:lastDistanceAlongRoute:)
  • We are renaming SimpleEngineCommonCalculator.calculateProgressOnRoute(location:route:distanceThreshInMeters:lastDistanceAlongRoute:) to calculateProgressOnRoute(location:route:distanceThreshold:lastDistanceAlongRoute:)
  • The parameter type in SimpleEngineCommonCalculator.calculateProgressOnRoute(location:route:distanceThreshInMeters:lastDistanceAlongRoute:) is changing from Swift.Double to Foundation.Measurement<Foundation.UnitLength>
  • The declared type for property SimpleEngineCalcResult.closestDistance is changing from Swift.Double to Foundation.Measurement<Foundation.UnitLength>

Announcing breaking changes: December 19, 2022

Search

What is changing?

  • We are removing the RelatedPois enum, as we do not support related POIs in response or search options.

Announcing breaking changes: December 5, 2022

General

What is changing?

  • We are removing the distance property from the Place structure.

Maps

Minor changes

  • We are moving PositionUpdateObserver protocol to the TomTomSDKDataManagement framework (from TomTomSDKDataStoreUpdater), to improve the dependency tree.
  • The following methods/properties will be removed from the TomTomSDKDataManagement.MapDataStore protocol:
    • updatesEnabled
    • addMapUpdateObserver
    • removeMapUpdateObserver
    • addAutomaticMapUpdateFailureObserver
    • removeAutomaticMapUpdateFailureObserver These methods will still be present on TomTomSDKDataManagementOffline.NDSStore class, so you will need to use that class instead of MapDataStore protocol to call these methods.
  • We are moving the following types (all related to the NDS Map Update functionality) to the TomTomSDKDataManagementOffline framework (from TomTomSDKDataManagement):
    • AutomaticMapUpdateFailureObserver
    • CompletedMapOperation
    • CurrentMapOperation
    • MapOperation
    • MapOperationType
    • MapUpdateError
    • MapUpdateObserver
    • RegionGraph
    • RegionGraphNode
    • RegionGraphNodeID
    • RegionGraphNodeState
    • RegionGraphObserver

Search

What is changing?

  • We are unifying search and search along the route APIs.
  • We are removing the offset parameter from the SearchOptions structure.
  • We are removing the fuzzyLevel parameter from the SearchOptions structure.

Routing

What is changing?

  • For TomTomSDKRoutePlanner:
    • Property AlternativeRoutesOptions.Builder.maxAlternatives changing the type from Int? to Int.
    • Property AlternativeRoutesOptions.maxAlternatives changing return type from Int? to Int.
    • Initializer AlternativeRoutesOptions.init(maxAlternatives:alternativeType:minDeviationDistance:minDeviationTime:) changing parameter maxAlternatives type from Int? to Int.
    • Initializer AlternativeRoutesOptions.init(maxAlternatives:alternativeType:minDeviationDistance:minDeviationTime:) removing default argument for maxAlternatives parameter.

What is changing?

  • We are reordering instruction params to group defaulted params at the end of the initializers.
  • We are renaming GuidanceOnlineAPIVersion to OnlineAPIVersion.

Announcing breaking changes: November 28, 2022

Maps

What is changing?

  • TomTomSDKDataManagement
    • MapStructureObserver protocol has been removed (use RegionGraphObserver instead).
    • RegionGraphNode’s id property has been removed (use nodeID instead).
  • TomTomSDKDataManagementOffline
    • TypeAlias MapOperationScheduler has been removed.
    • Class NDSStore has removed conformance to MapOperationScheduler. MapOperationScheduler has been removed.
    • Class NDSStore has removed conformance to MapStructureProvider. MapStructureProvider has been removed.
    • Class NDSStore has removed conformance to RegionGraphDataProviding. RegionGraphDataProviding has been moved to the GoSDK sample app.

Search

What is changing?

  • Replacing the EV Charging Stations Availability API from Search and HybridSearch modules with the EV Charging Stations Availability API from DynamicData module.
  • Removing TomTomSDKDataManagement.OnStoreAccessChangedObserver protocol support from the TomTomSDKSearchOffline.OfflineSearch and TomTomSDKRerevseGeocoderOffline.OfflineReverseGeocoder classes.

Announcing breaking changes: November 21, 2022

Maps

What is changing?

  • Renaming Map to TomTomMap

Search

What is changing?

  • Moving EntryPoints and ChargingPark from SearchResponse to POI class

Routing

What is changing?

  • Renaming:
    • HTTPHandlerProtocol > HTTPHandler
    • QueryProtocol > Query
    • SimpleEngineCommonCalcProtocol > SimpleEngineCommonCalc

What is changing?

  • Removing:
    • Enum NavigationOptionsActiveRouteError
    • Enum NavigationOptionsAddError
    • Enum NavigationOptionsRemoveError
    • Enum NavigationOptionsUpdateError
  • Changing:
    • Func NavigationOptionsActiveRouteDelegate.activeRouteSetFailed(with:) parameter type from TomTomSDKNavigation.NavigationOptionsActiveRouteError to TomTomSDKNavigation.Navigation.OptionsError
    • Func NavigationOptionsAddDelegate.routePlanAddFailed(with:) parameter type from TomTomSDKNavigation.NavigationOptionsAddError to TomTomSDKNavigation.Navigation.OptionsError
    • Func NavigationOptionsRemoveDelegate.routeRemovalFailed(with:) parameter type from TomTomSDKNavigation.NavigationOptionsRemoveError to TomTomSDKNavigation.Navigation.OptionsError
    • Func NavigationOptionsUpdateDelegate.updateFailed(with:) parameter type from TomTomSDKNavigation.NavigationOptionsUpdateError to TomTomSDKNavigation.Navigation.OptionsError
  • Renaming:
    • Func NavigationErrorObserver.didArrivalEngineFail(with:) to NavigationErrorObserver.arrivalEngineFailed(with:)
    • Func NavigationErrorObserver.didGuidanceEngineFail(with:) to NavigationErrorObserver.guidanceEngineFailed(with:)
    • Func NavigationErrorObserver.didHorizonEngineFail(with:) to NavigationErrorObserver.horizonEngineFailed(with:)
    • Func NavigationErrorObserver.didLocationContextEngineFail(with:) to NavigationErrorObserver.locationContextEngineFailed(with:)
    • Func NavigationErrorObserver.didMapMatchingEngineFail(with:) to NavigationErrorObserver.mapMatchingEngineFailed(with:)
    • Func NavigationErrorObserver.didRouteProgressDetectionEngineFail(with:) to NavigationErrorObserver.routeProgressDetectionEngineFailed(with:)
    • Func NavigationErrorObserver.didRouteReplanningEngineFail(with:) to NavigationErrorObserver.routeReplanningEngineFailed(with:)
    • Func NavigationErrorObserver.didRouteTrackingEngineFail(with:) to NavigationErrorObserver.routeTrackingEngineFailed(with:)
    • Func NavigationErrorObserver.didStartFail(with:) to NavigationErrorObserver.navigationStartFailed(with:)

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 of Maps and Navigation SDKs, we are renaming some frameworks to comply with the SDK-wide naming scheme. Historical frameworks remain available in the CocoaPods and SPM repositories. 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, make sure to remove all old frameworks used in your Podfile or your SPM package definition and add matching entries with the updated names. We will communicate the exact list of renamed frameworks in the Release Notes.

Announcing breaking changes: November 14, 2022

Maps

What is changing?

  • Renaming:
  • OnboardMapMatchingEngine to OfflineMapMatchingEngine (implementation)
  • OnboardLocationContextProviderEngine to OfflineLocationContextProviderEngine (implementation)

Search

What is changing?

  • Changing the way an API key is set for the API entry points in TomTomSDKOnlineSearch, TomTomSDKOnlineReverseGeocoder, and TomTomSDKOnlineDynamicData modules. From now on the API key will be set at the API entry point initialization. We are removing the following public preview APIs that we used for setting a key: SearchOnlineService class, ReverseGeocoderOnlineService class, and a static OnlineDynamicDataProvider.searchKey property.
  • Changing public preview API endpoint in TomTomSDKReverseGeocoder, TomTomSDKReverseGeocoderOnline, TomTomSDKReverseGeocoderOffline, and TomTomSDKReverseGeocoderHybrid modules:
    • Renaming the following API entry points:
      • Protocol ReverseGeocoderService to ReverseGeocoder
      • Class TomTomOnlineReverseGeocoderService to OnlineReverseGeocoder
      • Class TomTomOnboardReverseGeocoderService to OfflineReverseGeocoder
      • Class HybridReverseGeocoderService to HybridReverseGeocoder
      • Structure ReverseGeocoderQuery to ReverseGeocoderOptions
      • Changing the signature of method: ReverseGeocoder.reverseGeocode(query ReverseGeocoderQuery: completion: @escaping (Result<TomTomSDKReverseGeocoder.ReverseGeocoderResponse, Error>) to ReverseGeocoder.reverseGeocode(query ReverseGeocoderOptions: completion: @escaping (Result<TomTomSDKReverseGeocoder.ReverseGeocoderResponse, Error>)
    • Removing AdditionalDataQueryBuilder and AdditionalDataQuery from public API
  • Changing public preview API endpoint in TomTomSDKSearch, TomTomSDKReverseSearchOnline, TomTomSDKSearchOffline, and TomTomSDKSearchrHybrid modules:
    • Renaming API entry points:
      • Protocol SearchService to Search
      • Class TomTomOnlineSearchService to OnlineSearch
      • Class TomTomOnboardSearchService to OfflineSearch
      • Class HybridSearchService to HybridSearch
      • Query structures to options (e.g., renaming SearchQuery to SearchOptions)
      • Changing the signature of API methods by renaming query parameter to options

What is changing?

  • TomTomSDKCommon:
    • Removing constructor MatchedLocation.init(location:predictions:mapPosition:probability:)
    • Removing var MatchedLocation.predictions
    • Renaming Enum StreamExecutionPolicy to HybridRoutePlanner.ExecutionPolicy and moving to TomTomSDKHybridRouting
  • TomTomSDKNavigation:
    • Removing constructor MapMatchingResult.init (location:predictions:routeMatchingDetails:mapPosition:probability:)
  • TomTomSDKInternalDynamicRoutingApi:
    • Removing enum DynamicRoutingCommon
  • Renaming the following modules:
    • TomTomSDKOnboardLocationContextProviderEngine > TomTomSDKLocationContextProviderEngineOffline
    • TomTomSDKOnboardMapMatchingEngine > TomTomSDKMapMatchingEngineOffline
    • TomTomSDKOnlineSearch > TomTomSDKSearchOnline
    • TomTomSDKOnboardSearch > TomTomSDKSearchOffline
    • TomTomSDKHybridSearch > TomTomSDKSearchHybrid
  • Renaming the following functions:
    • GuidanceEngine.generateGuidance(inputParameters:) > generateGuidance(navigationSnapshot:)
    • GuidanceEngine.generateLaneGuidance(inputParameters:) > generateLaneGuidance(navigationSnapshot:)
    • LocationContextDetectionEngine.detectLocationContext(matchedLocation:) > detectLocationContext(navigationSnapshot:)
    • NavKitLocationContextEngine.detectLocationContext(matchedLocation:) > detectLocationContext(navigationSnapshot:)
    • TomTomDynamicGuidanceEngine.generateGuidance(inputParameters:) > generateGuidance(navigationSnapshot:)
    • TomTomDynamicGuidanceEngine.generateLaneGuidance(inputParameters:) > generateLaneGuidance(navigationSnapshot:)
    • TomTomGuidanceEngine.generateGuidance(inputParameters:) > generateGuidance(navigationSnapshot:)
    • TomTomGuidanceEngine.generateLaneGuidance(inputParameters:) > generateLaneGuidance(navigationSnapshot:)
    • OnboardLocationContextProviderEngine.detectLocationContext(matchedLocation:) > detectLocationContext(navigationSnapshot:)
  • Func GuidanceEngine.generateGuidance(inputParameters:) changing parameter 0 type from TomTomSDKNavigation.GuidanceParams to TomTomSDKNavigation.NavigationSnapshot
  • Func GuidanceEngine.generateLaneGuidance(inputParameters:) changing parameter 0 type from TomTomSDKNavigation.GuidanceParams to TomTomSDKNavigation.NavigationSnapshot
  • Func LocationContextDetectionEngine.detectLocationContext(matchedLocation:) changing parameter 0 type from TomTomSDKCommon.MatchedLocation to TomTomSDKNavigation.NavigationSnapshot
  • Func NavKitLocationContextEngine.detectLocationContext(matchedLocation:) changing parameter 0 type from TomTomSDKCommon.MatchedLocation to TomTomSDKNavigation.NavigationSnapshot
  • Func TomTomDynamicGuidanceEngine.generateGuidance(inputParameters:) changing parameter 0 type from TomTomSDKNavigation.GuidanceParams to TomTomSDKNavigation.NavigationSnapshot
  • Func TomTomDynamicGuidanceEngine.generateLaneGuidance(inputParameters:) changing parameter 0 type from TomTomSDKNavigation.GuidanceParams to TomTomSDKNavigation.NavigationSnapshot
  • Func TomTomGuidanceEngine.generateGuidance(inputParameters:) changing parameter 0 type from TomTomSDKNavigation.GuidanceParams to TomTomSDKNavigation.NavigationSnapshot
  • Func TomTomGuidanceEngine.generateLaneGuidance(inputParameters:) changing parameter 0 type from TomTomSDKNavigation.GuidanceParams to TomTomSDKNavigation.NavigationSnapshot
  • Func OnboardLocationContextProviderEngine.detectLocationContext(matchedLocation:) changing parameter 0 type from TomTomSDKCommon.MatchedLocation to TomTomSDKNavigation.NavigationSnapshot
  • Changing NavigationConfigurationBuilder signature from NavigationConfigurationBuilder(apiKey: String, locationProvider: LocationProvider, routeReplanner: TomTomSDKRouteReplanner.RouteReplanner) to NavigationConfigurationBuilder(navigationKey: String, locationProvider: LocationProvider, routeReplanner: TomTomSDKRouteReplanner.RouteReplanner)
  • Removing RouteMatchingDetails type
  • Changing MapMatchingResult type: removing public let routeMatchingDetails: RouteMatchingDetails, and adding public let followedRouteIds: [UUID].
  • Changing initializer of MapMatchingResult from:
1public init(
2 matchedLocation: MatchedLocation,
3 timestamp: Measurement<UnitDuration> = .tt.seconds(0),
4 predictions: [GeoLocation] = [],
5 routeMatchingDetails: RouteMatchingDetails = RouteMatchingDetails(followedRoutesIds: []),
6 alternativeMatchedLocations: [MatchedLocation] = )

to

1public init(
2 matchedLocation: MatchedLocation,
3 timestamp: Measurement<UnitDuration> = .tt.seconds(0),
4 predictions: [GeoLocation] = [],
5 followedRouteIds: [UUID] = [],
6 alternativeMatchedLocations: [MatchedLocation] = )

Minor changes

  • TomTomSDKNavigation:
    • Adding var MapMatchingResult.timestamp
    • Adding var MapMatchingResult.alternativeMatchedLocations
    • Adding var MatchedLocation.positionId
    • Adding var MatchedLocation.isOnRoad
    • Adding var MatchedLocation.direction

Announcing breaking changes: November 7, 2022

General

What is changing?

  • Removing:
  • Obsolete internal API AudioConfigurationProvider protocol from the TomTomSDKCommon module.
  • Obsolete IDGenerator class from the public API of the TomTomSDKCommon module.
  • Renaming:
  • TomTomSDKHTTPFramework > TomTomSDKNetworking
  • TomTomSDKLocation > TomTomSDKLocationProvider
  • TomTomSDKMapsDisplay > TomTomSDKMapDisplay
  • TomTomSDKOnboardStyleProvider > TomTomSDKStyleProviderOffline
  • TomTomSDKNavigationView > TomTomSDKNavigationUI
  • TomTomSDKSystemTextToSpeechEngine > TomTomSDKDefaultTextToSpeech
  • TomTomSDKOnboardMapDisplayDataProvider > TomTomSDKMapDisplayDataProviderOffline
  • TomTomSDKDynamicRoutingApi > TomTomSDKRouteReplanner
  • TomTomSDKOnlineDynamicRoutingApi > TomTomSDKRouteReplannerDefault
  • TomTomSDKInternalDynamicRoutingApi > TomTomSDKRouteReplannerInternal
  • TomTomSDKHybridDynamicRouting > TomTomSDKRouteReplannerHybrid
  • TomTomSDKOnlineDynamicData > TomTomSDKDynamicDataOnline
  • TomTomSDKOnboardDataManagement > TomTomSDKDataManagementOffline
  • TomTomSDKRouting > TomTomSDKRoutePlanner
  • TomTomSDKOnlineRouting > TomTomSDKRoutePlannerOnline
  • TomTomSDKOnboardRouting > TomTomSDKRoutePlannerOffline
  • TomTomSDKHybridRouting > TomTomSDKRoutePlannerHybrid
  • TomTomSDKOnlineReverseGeocoder > TomTomSDKReverseGeocoderOnline
  • TomTomSDKOnboardReverseGeocoder > TomTomSDKReverseGeocoderOffline
  • TomTomSDKHybridReverseGeocoder > TomTomSDKReverseGeocoderHybrid
  • TomTomSDKNavigationVisualizationAddon > TomTomSDKAddonNavigationVisualization
  • TomTomSDKRangeVisualizationAddon > TomTomSDKAddonRangeVisualization
  • TomTomSDKUIComponents > TomTomSDKCommonUI
  • TomTomSDKTPEGTraffic > TomTomSDKTrafficTPEG
  • TomTomSDKOnlineRouteProjectionEngine > TomTomSDKRouteProjectionEngineTileStore
  • TomTomSDKOnboardStructuredSearch > TomTomSDKStructuredSearchOffline
  • TomTomSDKOnboardVehicleHorizonEngine > TomTomSDKHorizonEngineOffline

Minor changes

  • Making utility network-related classes from the TomTomSDKCommon module spi-internal.
  • Making ValueFormattingResult and ValueWithUnitFormatter API from TomTomSDKCommon module spi-internal.

Routing

What is changing?

  • Renaming:
  • RoutingService > RoutePlanner
  • TomTomRoutingService > OnlineRoutePlanner
  • OnboardRoutingService > OfflineRoutePlanner
  • HybridRouting > HybridRoutePlanner
  • RoutingOnlineService > OnlineRoutingService (API key management)
  • Removing:
  • OnlineRoutingService and initialize OnlineRoutePlanner with ROUTING_API_KEY directly

What is changing?

  • Removing language from Guidance public API.

Announcing breaking changes: October 31, 2022

General

What is changing?

  • Mark as @_Spi internal classes/protocols in Common module.
  • LineOptions introduced new properties: PatternAppearance and OutlineAppearance.
  • Renaming acronyms in function parameters, classes, protocols and variables. Examples:
  • Id > ID,
  • Uuid > UUID,
  • annotationId > annotationID
  • LineOptions introduced new properties: PatternAppearance and OutlineAppearance.

Maps

What is changing?

  • Removing deprecated OnboardDataStoreUpdateContextEngine (use DataStoreUpdater).
  • Renaming acronyms in function parameters, classes, protocols and variables. Examples:
  • Id > ID,
  • Uuid > UUID,
  • annotationId > annotationID
  • Marking in Common internal api as @_Spi.

What is changing?

  • Removing PhoneticPair, PhoneticStringPair and PhoneticTranscription from public API.
  • Removing Announcement.maneuver from public API.
  • Removing VerbalMessageComposer from public API.
  • Removing VerbalMessageGeneration from public API.
  • Removing LaneGuidanceGenerator from public API.
  • Renaming isPossibleToCombineWithNext to combineWithNext in public API.
  • Renaming RoutePoint to RouteStop.
  • Renaming DynamicRoutingApi to RouteReplanner.
  • Renaming OnlineDynamicRoutingClient to DefaultRouteReplanner.
  • Renaming HybridDynamicRouting to HybridRouteReplanner.
  • In Navigation class delegate property is removed. TomTomNavigationDelegate protocol is also being removed. Instead, you should use delegate property of Navigation class and TomTomNavigationDelegate protocol.
public func addNavigationObserver(_ observer: NavigationObserver)
public func removeNavigationObserver(_ observer: NavigationObserver)

Methods of Navigation class, and NavigationObserver protocol respectively. Also, for subscribing to a specific event, you can use specific methods like addStartObserver/removeStartObserver and NavigationStartObserver protocol, addProgressObserver/removeProgressObserver and NavigationProgressObserver protocol, etc. (see list of the methods of Navigation class).

  • In Navigation class delegateError property is removed. TomTomNavigationErrorDelegate protocol is also being removed. Instead, you should use delegateError property of Navigation class and TomTomNavigationErrorDelegate protocol.
public func addErrorObserver(_ observer: NavigationErrorObserver)
public func removeErrorObserver(_ observer: NavigationErrorObserver)