# Release Notes

We are pleased to announce the availability of version 4.9.0.0 (Explore Edition) of the new HERE SDK for iOS.

This is a stable release. We are constantly working on new features, stabilizing APIs, improving our KPIs, and evaluating your feedback.

## Changes

This section documents major changes to this release that may require you to update your applications.

### Version 4.9.0.0

#### New Features

• Added new animation features to MapCamera with startAnimation(MapCameraAnimation), EasingFunction and KeyframeInterpolationMode. Added related classes GeoCoordinatesKeyframe, GeoOrientationKeyframe, Point2DKeyframe, ScalarKeyframe, MapCameraAnimation, MapCameraAnimationFactory and MapCameraKeyframeTrack.
• Routes can now be imported: Added routingEngine.importRoute() to import a route from a list of GeoCoordinates and RouteOptions.
• Added support for map marker clustering with the new classes MapMarkerCluster and MapMarkerCluster.ImageStyle. A marker cluster can be added/removed with MapScene.addMapMarkerCluster()/MapScene.emoveMapMarkerCluster. See the MapItems example app for a usage example.
• Added optional field time to Location class to specify the time when the location data was set.
• Batch support for MapMarker: Added method to add multiple MapMarker items at once. With mapScene.addMapMarkers() a list of MapMarker items can be added to a MapScene with a single batch call.
• Search: Added PlaceType.intersection to indicate an intersection of at least two streets. Note: This is a beta feature.

#### API Changes

• Removed the previously deprecated MapRepresentable interface and addMapRepresentable and removeMapRepresentable methods from MapView. Use the MapViewLifecycleDelegate instead.
• Map schemes: Removed the previously deprecated scene configuration files: "legacy.grey.day.json", "legacy.grey.night.json", "legacy.hybrid.day.json", "legacy.hybrid.night.json", "legacy.normal.day.json", "legacy.normal.night.json". Use the related MapSchemes instead.
• Removed the previously deprecated Notice struct, NoticeCode enum and Section.notices property. Use SectionNoticeCode, SectionNotice class and Section.getSectionNotices() method instead.
• Declared all Gestures delegate properties as weak.
• Search: Removed the following fields from Address class that have been previously deprecated: stateName, countyName, streetName, additionalData. Please use state, county and street instead. The field additionalData was already unused.
• Search: Removed the perviously deprecated optionsNotAvailable value from the SearchError enum. It was replaced by the SearchError.invalidParameter value.
• Removed the previously deprecated setFrame() method from MapView class. Use the frame property instead.
• Removed the previously deprecated greyDay and greyNight from MapScheme enum. Use the normal map scheme variants instead.
• Deprecated field timestamp in Location class, please use the newly introduced time field instead.

#### Resolved Issues

• Fixed Chinese fonts that have been displayed accidentially for Japan labels.
• Fixed: Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated
• When using Xcode 13 you may get a warning that certain files in heresdk.swiftmodule are either malformed or generated by a different Swift version. It is safe to ignore this warning. The reason for this warning is that the HERE SDK is compiled with Xcode 12.4.
• MapMarkerCluster groups are not directly pickable yet. As a workaround, overlapping clusters can be identified by setting a unique Metadata key to the contained MapMarker items. See the MapItems app for an example.
• The traffic layers MapScene.Layers.TrafficFlow and MapScene.Layers.TrafficIncidents may not be instantly visible when starting an app for the first time.

## Changes from Previous Releases

This section documents major changes from past releases. We encourage you to use the latest release, 4.9.0.0.

### Version 4.8.4.0

#### New Features

• Routing: Added durationInSeconds property to the Maneuver class to get the estimated duration of a maneuver.
• Added new factory method for DMS and decimal GeoCoordinates to convert one into the other with GeoCoordinates.fromString().
• Search: Added ResponseDetails as result type that provides the requestId of a search request and a correlationId to identify multiple, related queries.
• Routing: Added a static fromString method to SegmentReference to generate instances of this class from a well-formatted String. Usually, SegmentReference instances are only accessible from the Span of a Route's Segment.

#### API Changes

• Routing: For the new toll cost API, now the newly added RouteOptions.enableTolls flag must be set to get toll costs. It is set to false by default. When this flag is enabled, toll data is requested for toll applicable transport modes.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated

### Version 4.8.3.0

#### Highlights

• Added MapView.pause() and MapView.resume() static methods to prevent unnecessary GPU calls when an application runs in background. It is recommend to call these methods in your AppDelegate's methods applicationDidEnterBackground(_ application:) and applicationWillEnterForeground(_ application:).

#### New Features

• Public transit routes: Added support for new pedestrian sections to provide better information on in-station walks, for example, when walking from a place of type accessPoint type to a place of type station.
• Routing: Added RouteOptions.enableTrafficOptimization property which is true by default, and when set to false, it doesn't consider traffic information and ignores RouteOptions.departureTime.
• Routing: It's now possible to avoid individual segments on a Route. With the newly added segments field in AvoidanceOptions users can specify the parts of a route they would like to avoid after a recalculation. The segments can be identified via Route -> Section -> Span -> SegmentReference.
• Added SegmentReference class that represents a reference to a segment id with a travel direction.
• Added getSegmentReference method to the Span class.
• Added TravelDirection enum that indicates the travel direction along a segment.
• Added enhanced APIs to control the MapCamera with the new classes MapCameraUpdate, MapCameraUpdateFactory and MapMeasure. Added the applyUpdate method to MapCamera that accepts a MapCameraUpdate as parameter.
• Routing: Added violatedAvoidSeasonalClosure, violatedAvoidTollTransponder, seasonalClosure, tollTransponder, tollsDataUnavailable and chargingStopNotNeeded symbols to the SectionNoticeCode enum.

#### API Changes

• Transit routes no longer provide fare information and the TransitSectionDetails.fares list is always empty.
• Routing: Deprecated SectionNoticeCode.violatedPedestrianOption symbol. It will be removed in v4.11.0 as it is no longer supported.
• Deprecated persistentMapStorageFolderAccessDenied and failedToLockPersistentMapStorageFolder values from the InstantiationErrorCode enum. The persistent storage directory is no longer locked.

#### Resolved Issues

• Fixed: It is not possible to set both RouteOptions.departureTime and RouteOptions.arrivalTime at the same time. Plus, RouteOptions.arrivalTime is ignored when RouteOptions.enableTrafficOptimization is set to false.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated

### Version 4.8.2.0

#### New Features

• Improved search for electric vehicle charging stations: Added classes EVChargingPool and EVChargingStation. A charging pool for electric vehicles is an area equipped with one or more charging stations. A charging station defines a group of connectors for electrical vehicles that share a common charging connector type and max power level. Note: This is a beta feature.
• Improved search for electric vehicle charging stations: Added property Details.evChargingPool that represents the details of the charging pool for electric vehicles. Note: This is a beta feature.
• Routing: Added information on toll costs with a new PaymentMethod enum, TollFare & Toll structs and Section.tolls property. Note: This is a beta feature.

#### Resolved Issues

• Fixed: In rare cases, Storage.LevelDB related crashes can occur when starting the app.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated

### Version 4.8.1.0

#### New Features

• Routing: Added NoRouteHandle enum value to RoutingError to indicate that the route did not contain the required RouteHandle, which is needed, for example, to refresh a route.
• Search: Added new name property to PlaceCategory that provides a level 3 description.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• In rare cases, Storage.LevelDB related crashes can occur when starting the app.
• Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated

### Version 4.8.0.0

#### API Changes

• Deprecated MapCamera.Orientation - replaced with GeoOrientation.
• Deprecated MapCamera.OrientationUpdate - replaced with GeoOrientationUpdate.
• Deprecated MapCamera.State.targetOrientation- replaced with MapCamera.State.orientationAtTarget.
• Deprecated MapCamera.orbitBy(_ delta: MapCamera.OrientationUpdate, around origin: Point2D) - replaced with MapCamera.orbitBy(_ delta: GeoOrientationUpdate, around origin: Point2D).
• Deprecated MapCamera.lookAt(point target: GeoCoordinates, orientation: MapCamera.OrientationUpdate, distanceInMeters: Double) - replaced with MapCamera.lookAt(point target: GeoCoordinates, orientation: GeoOrientationUpdate, distanceInMeters: Double).
• Deprecated MapCamera.lookAt(area target: GeoBox, orientation: MapCamera.OrientationUpdate) Parameters - replaced with MapCamera.lookAt(area target: GeoBox, orientation: GeoOrientationUpdate).
• Deprecated MapCamera.setTargetOrientation(orientation: MapCamera.OrientationUpdate) - replaced with MapCamera.setOrientationAtTarget(_ orientation: GeoOrientationUpdate).
• Deprecated MapCamera.flyTo(target: GeoCoordinates, orientation: MapCamera.OrientationUpdate, animationOptions: MapCamera.FlyToOptions) - replaced with MapCamera.flyTo(target: GeoCoordinates, orientation: GeoOrientationUpdate, animationOptions: MapCamera.FlyToOptions).
• Deprecated MapCamera.flyTo(target: GeoCoordinates, orientation: MapCamera.OrientationUpdate, distanceInMeters: Double, animationOptions: MapCamera.FlyToOptions) - replaced with MapCamera.flyTo(target: GeoCoordinates, orientation: GeoOrientationUpdate, distanceInMeters: Double, animationOptions: MapCamera.FlyToOptions).
• Deprecated MapCamera.lookAt(area target: GeoBox, orientation: MapCamera.OrientationUpdate, viewRectangle: Rectangle2D) - replaced with MapCamera.lookAt(area target: GeoBox, orientation: GeoOrientationUpdate, viewRectangle: Rectangle2D).
• Removed the previously deprecated updateGeometry() methid from MapPolyline and MapPolygon.
• Search: Removed previously deprecated fields in Contact: emailAddresses, landlinePhoneNumbers, mobilePhoneNumbers, websiteAddresses.
• Routing: Removed the previously deprecated Arrival and Departure classes.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• In rare cases, Storage.LevelDB related crashes can occur when starting the app.
• Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated

### Version 4.7.7.0

#### New Features

• Search: Added politicalView member to Place class. The optional value can be checked if it is matching the one that was set beforehand via SDKOptions.

#### API Changes

• The map styles for NORMAL_DAY, NORMAL_NIGHT, HYBRID_DAY and HYBRID_NIGHT have been updated to the ones that have been made available as preview beforehand. The new map styles feature a clean and neutral base map and a street network with improved gray scales that allow a better hierarchy of elements that can be added on top.
• MapView: "Simplified Chinese", "Traditional Taiwan" and "Traditional Hong Kong" language labels are now supported.
• Routing: Updated the API for the returnToRoute and refreshRoute feature for RoutingEngine:
• Changed the parameter order of RoutingInterface.returnToRoute(): The startingPoint parameter is now the second parameter, not the third parameter. The feature is still in beta.
• Added a startingPoint parameter to the RoutingEngine.refreshRoute() method. In return, deleted RefreshRouteOptions.updateStartingPoint(). The feature is still in beta.
• Deleted the ReturnToRouteEngine. Use the newly introduced RoutingInterface.returnToRoute() method instead.

#### Resolved Issues

• Fixed: A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• Fixed: When MapMarker.setOverlapAllowed() is set to false and the map is zoomed, this can lead to a flickering of the marker assets.

#### Highlights

• Note: The existing delegate properties for the Gestures class will be changed to weak references with the upcoming HERE SDK v4.9.0 release. After this change, it is no longer necessary to manually set delegates to nil to break the retain cycle between conforming objects and their respective delegate variables.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.

### Version 4.7.6.0

#### Highlights

• Note: The existing delegate properties for the Gestures class will be changed to weak references with the upcoming HERE SDK v4.9.0 release. After this change, it is no longer necessary to manually set delegates to nil to break the retain cycle between conforming objects and their respective delegate variables.

#### New Features

• Improved map rendering performance on low end devices.

#### Resolved Issues

• Fixed: Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• When MapMarker.setOverlapAllowed() is set to false and the map is zoomed, this can lead to a flickering of the marker assets.

### Version 4.7.5.0

#### New Features

• Routing: Added avoidance options for pedestrians with PedestrianOptions.avoidanceOptions.
• Search: Added support to search along longer route polylines with a GeoCorridor. Either increase halfWidthInMeters when set via constructor or do not set it - by using the GeoCorridor constructor that only allows to set the GeoPolyline. The parameter radiusInMeters has been deprecated: Please only use halfWidthInMeters as constructor parameter to specify the thickness of the route corridor. When increasing halfWidthInMeters then a greater simplification of the polyline shape can be achieved resulting in a longer route that can be searched along. On the downside the results are less accurate and can lie farther away from the route. When halfWidthInMeters is not set, a suitable value is set internally based on "best guess".
• The LocationIndicator now supports a gray state that can be set via LocationIndicator.isActive.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• When MapMarker.setOverlapAllowed() is set to false and the map is zoomed, this can lead to a flickering of the marker assets.

### Version 4.7.4.0

#### Highlights

• Note: The existing delegate properties for the Gestures class will be changed to weak references with the upcoming HERE SDK v4.9.0 release. After this change, it is no longer necessary to manually set delegates to nil to break the retain cycle between conforming objects and their respective delegate variables.

#### New Features

• Routing: Added TruckType enum to specify the type of a truck for the TruckSpecifications.
• Routing: Added TruckSpecifications.trailerCount to specify the number of trailers.
• Routing: Added accessPoint to RoutePlaceType enum. It allows to differentiate Section's based on RoutePlace.type.
• Public transit: Added FarePriceType enum, FarePrice.type, FarePrice.minimum and FarePrice.maximum properties. FarePrice provides the actual price value.

#### API Changes

• Gestures: A finger down gesture stops now any ongoing animation including kinetic panning.
• Routing: Deprecated FarePrice.unit, use the newly introduced FarePrice.validityPeriodInSeconds property instead.
• Routing: Deprecated the unsupported Agency.icon property. This property is no longer supported and will be removed with HERE SDK release v4.10.0.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• When MapMarker.setOverlapAllowed() is set to false and the map is zoomed, this can lead to a flickering of the marker assets.

### Version 4.7.3.0

#### New Features

• Routing: Added support for EVCarOptions and EVTruckOptions for the RefreshRouteOptions class.
• EV Routing: Added new parameters to BatterySpecifications:
• minChargeAtChargingStationInKilowattHours: The minimum charge when arriving at a charging station.
• minChargeAtDestinationInKilowattHours: The minimum charge at the final route destination.
• maxChargingVoltageInVolts: The maximum charging voltage supported by the vehicle's battery.
• maxChargingCurrentInAmperes: The maximum charging current supported by the vehicle's battery.
• chargingSetupDurationInSeconds: The time spent after arriving at a charging station, but before actually charging.
• SearchEngine: For reverse geocoding it is now possible to search in a GeoCircle with search(circle: GeoCircle, options: SearchOptions, completion: SearchCompletionHandler).

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• When MapMarker.setOverlapAllowed() is set to false and the map is zoomed, this can lead to a flickering of the marker assets.

### Version 4.7.2.0

#### New Features

• Added a feature to refresh a Route: Added the RouteOptions.enableRouteHandle flag to get a RouteHandle, a RefreshRouteOptions class and a RoutingEngine.refreshRoute() method. Note that currently EVRouteOptions are not supported. See the related chapter in the Developer's Guide for more information.
• LocationIndicator: Added a new style for pedestrians. The new style is added to IndicatorStyle and can be set to a LocationIndicator instance to switch the default 3D map marker model to indicate the current heading and location. Optionally, the style can be customized.
• Added an option to affect FPS rendering of the map view by decreasing or increasing the frameRate with MapView.frameRate. This can be useful to reduce CPU usage for low end devices. The default FPS is 60 frames per second. It is also possible to deactivate automatic render cycles by setting FPS to 0.

#### Resolved Issues

• Fixed: MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.

### Version 4.7.1.0

#### Highlights

• Added a default 3D LocationIndicator to show the current location and travel direction of a user. It can be added to the map view with MapView.addMapLifecycleListener(). Update its location via Mapview.updateLocation() that accepts a Location as parameter. The look of the default asset can be customized by setting a MapMarker3DModel as parameter to LocationIndicator.setMarker3dModel(). You can also specify the MarkerType: In the future, it may be used to enable different styles of markers for different use cases.

#### New Features

• Introduced taxi routes. Added TransportMode.taxi type and a TaxiOptions class to calculate routes optimized for taxis via RoutingEngine.calculateRoute(). Note: This is a beta release of this transport mode, so there could be a few bugs and unexpected behaviors.
• Routing: Added RouteOptions.speedCapInMetersPerSecond to limit the maximum allowed speed for a vehicle. When set, the route duration will be shorter for car and truck transport modes. For scooter routes it may also affect the route geometry. Other transport modes are ignored.

#### Resolved Issues

• Fixed: Public transit routes do not contain maneuvers.
• Fixed: MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.

### Version 4.7.0.0

#### Highlights

• Introduced public transit routing with a new TransitRoutingEngine that can calculate public transit routes. It uses TransitWaypoint type waypoints and a TransitRouteOptions class to specify various transit related options. Note that the API is in an early development stage. More features and overall stabilization are planned for the next releases.

#### New Features

• Along with the newly introduced TransitRoutingEngine (see above), the following supportive types have been added: AttributionType enum, FarePriceType enum, FareReason enum, PreActionType enum, TransitDepartureStatus enum, TransitIncidentType enum, TransitIncidentEffect enum, TransitMode enum, TransitModeFilter enum, Agency class, Attribution class, Fare class, FarePrice class, PreAction class, TransitIncident class, TransitDeparture class, TransitSectionDetails class, TransitStop class, and TransitTransport class.
• Routing: Introduced a new Span class that is accessible from a Section on a Route. It points to the related section notices to indicate possible route violations. With the Span class these violations can now be identified on the Route as they contain the length in meters and the geometry.
• Routing: Added additional constructor for IsolineOptions.Calculation: IsolineOptions.Calculation init(rangeType: IsolineRangeType, rangeValues: [Int32], isolineCalculationMode: IsolineCalculationMode).
• Search: Added new method to SearchEngine to get place details for a Suggestion that contains a href String. Use the new sendRequest() method for this.

#### API Changes

• Added a new MapViewLifecycleListener that replaces the deprecated MapRepresentable. It can be added or removed from a Mapview. Use this to get notified on the map view's lifecycle.
• Deprecated MapRepresentable and the related methods to add or remove it from a MapView. Use the newly introduced MapViewLifecycleListener instead.
• Removed the previously deprecated GeoBox.intersects(GeoBox) and GeoBox.contains(GeoBox).
• Removed the previously deprecated LocationProvider and the LocationListener.onLocationTimeout() method.
• Removed the previously deprecated Section.transportMode property.
• Removed the previously deprecated GeoCorridor(List<GeoCoordinates>, Double) constructor.
• Removed the previously deprecated Place.coordinates property.
• Removed the previously deprecated class Color and the deprecated extension for UIColor.

#### Resolved Issues

• Fixed: The opening hours for a Place that closes after midnight end at midnight.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.
• Public transit routes do not contain maneuvers.

### Version 4.6.5.0

#### New Features

• Added support for political views. SDKOptions allow now to specify the politicalView string. It's a three letter country code defined by ISO 3166-1 alpha-3. When set, all map data will respect the point of view of this country. Note that this is a beta feature and thus there can be bugs and unexpected behaviour.
• A Place can now be serialized or deserialized with serializeCompact() and deserialize() to or from a String.
• Routing: Added SectionNoticeCode and NoticeSeverity enums, SectionNotice class and Section.sectionNotices property to get informed on possible route violations.
• Isoline Routing:
• Added RoutePlaceDirection enum with values arrival and departure.
• Added isolineDirection field inside IsolineOptions.Calculation structure (with default value of RoutePlaceDirection.departure)
• Extended the existing IsolineOptions.Calculation constructor to accept the new RoutePlaceDirection enum.
• Added RouteOptions.arrivalTime to set an optional time when a travel is expected to end. Note that this parameter is currently only supported for isoline route calculation.

#### API Changes

• Routing: Deprecated the Notice class and NoticeCode enum along with Section.notices property, use the newly introduced SectionNoticeCode, SectionNotice class and Section.sectionNotices property instead.
• Search: Deprecated SearchError.optionNotAvailable enum value, it will be replaced by the existing SearchError.invalidParameter value.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• The opening hours for a Place that closes after midnight end at midnight.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.

### Version 4.6.4.0

#### New Features

• Routing: Introduced Waypoint.minCourseDistanceInMeters to specify an optional distance parameter during which a user can avoid taking actions.
• The size of the viewport can now be retrieved from MapView with the new viewportSize property that returns Size2D in physical pixels.
• Enhanced FlyTo MapCamera animations from A to B with target orientation and target distance: flyTo(target: GeoCoordinates, orientation: MapCamera.OrientationUpdate, animationOptions: MapCamera.FlyToOptions).
• New map styles have been introduced as beta versions.
• The map styles for normalDay, normalNight, hybridDay and hybridNight will be updated with v4.8.0. The planned new map styles are already accessible under following file names as beta versions:
• "preview.normal.day.json" - This scheme will update the current normalDay in v4.8.0.
• "preview.normal.night.json" - This scheme will update the current normalNight in v4.8.0.
• "preview.hybrid.day.json" - This scheme will update the current hybridDay in v4.8.0.
• "preview.hybrid.night.json" - This scheme will update the current hybridNight in v4.8.0.
• The legacy map styles for normalDay, normalNight, hybridDay and hybridNight will still be accessible for v4.8.0 until v4.9.0 under the file names listed below. They will be removed with v4.9.0.
• "legacy.normal.day.json"
• "legacy.normal.night.json"
• "legacy.hybrid.day.json"
• "legacy.hybrid.night.json"
• "legacy.grey.day.json"
• "legacy.grey.night.jso

#### API Changes

• The map styles MapScheme.greyDay, MapScheme.greyNight have been deprecated and will be removed. Use the normal variants instead.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• The opening hours for a Place that closes after midnight end at midnight.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.

### Version 4.6.3.0

#### New Features

• Added new WatermarkStyle enum that defines the style of the HERE watermark logo. The dark watermark should be used for custom styles that are brighter (like daytime) and the light watermark for darker custom schemes (like night or satellite based). Added a new loadScene() method to MapScene to accept the new enum together with a custom style.
• MapCamera: Added FlyToOptions to customize the fly-to animation from current target GeoCoordinates to a new location. The durationInMs parameter defines how long the animation will run, the bowFactor defines a relative camera height for the ballistic curve that ranges from -1 < 0 (concave curve) to 0 (constant height) to 0 < 1 (convex curve). The maximum height can be achieved with a bowFactor of 1, the minimum with -1. Note that the height is relative to the distance between current target and new target to achieve a constant look regardless of the current zoom level.
• Routing: Added sideOfStreetHint property to Waypoint. These optional GeoCoordinates indicate which side of the street should be used to reach the waypoint. For example, if the location is to the left of the street, the route will prefer using that side in case the street has dividers. Hence, if the street has no dividers, sideOfStreetHint is ignored.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• The opening hours for a Place that closes after midnight end at midnight.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.

### Version 4.6.2.0

#### New Features

• Introduced beta versions of new map style combinations for use with MapScene.loadScene(): "preview.normal.day.json", "preview.normal.night.json", "preview.hybrid.day.json" and "preview.hybrid.night.json".
• Added new map item type: MapArrow elements can now be rendered on the map to indicate a direction. They can be added or removed like other map items via MapScene.
• MapMarker items can now be made invisible once they overlap each other at certain zoom levels. They contain a new property with isOverlapAllowed: Bool { get set }.

#### API Changes

• The free flow traffic layer is now rendering green traffic flow lines by default.

#### Resolved Issues

• Fixed: When traffic flows are enabled, map gestures may behave slower than expected.
• Fixed: When SDKOptions is created before initialization of SDKNativeEngine it may contain a corrupted path.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• The opening hours for a Place that closes after midnight end at midnight.
• An inner city Route for trucks carrying dangerous goods may not result in an error message.

### Version 4.6.1.0

#### Highlights

• Added new flyTo() method to MapCamera for basic animations from A to B by setting new target coordinates. The animation can be interrupted by gestures or any programmatical change of the camera's position or orientation.

#### New Features

• Routing: Introduced ZoneCategory enum and added zoneCategories field to to the AvoidanceOptions struct which is a collection of ZoneCategory's.
• EV routing: Introduced Route.getEVDetails() which returns the accumulated evDetails data for all sections of a route.

#### API Changes

• Routing: Deprecated Section.getter:arrival and Section.getter:departure. Instead, use the newly introduced Section.getter:arrivalPlace and Section.getter:departurePlace to get a RoutePlace.
• Deprecated the Address fields stateName, countyName, streetName and the related constructors. Instead, use the newly introduced constructor that takes the new fields state, country and street.

#### Resolved Issues

• Fixed: Performing a CategoryQuery or a TextQuery search no longer returns SearchError.httpError when searching in a circle, whose radius is a number with a fraction.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• When SDKOptions is created before initialization of SDKNativeEngine it may contain a corrupted path.

### Version 4.6.0.0

#### Highlights

• Added isoline routing to calculate the reachable area for the given center coordinates and a range defined in time, distance or energy consumption. Added a new calculateIsoline() method to RoutingEngine. Added related classes:
• IsolineOptions: Options for isoline calculation.
• IsolineRangeType: Enumeration specifying whether the range type is defined in time, distance or energy consumption.
• IsolineCalculationMode: Specifies how the isoline calculation can be optimized.
• Isoline: Represents a single isoline.
• MapMatchedCoordinates: Contains a pair of user-defined and map-matched coordinates.

#### More New Features

• MapPolygon items can now be picked from MapView. PickMapItemsResult can now include a list of MapPolygon items.
• Added ScooterOptions.allowHighway property.
• Added method to look at a given GeoBox at the map view with lookAt(target: GeoBox, orientation: MapCamera.OrientationUpdate, viewRectangle: Rectangle2D) -> Void. For example, this can be used to show a route on a certain part of the map view.
• Search: Added categories field to OpeningHours. It contains categories related to specific OpeningHours. For example, when a Place has multiple opening hours associated with it.
• Road shields are now rendered by default on the map view.
• Search: An unused TaskHandle returned for online and offline search engines can now be omitted instead of excluding it with _ = ....

#### API Changes

• Removed beta status for scooter transport mode.
• Deprecated the updateGeometry() method for MapPolygon. Use the newly introduced set/get geometry accessors instead to get or set a GeoPolygon.
• Deprecated the updateGeometry() method for MapPolyline. Use the newly introduced set/get geometry accessors instead to get or set a GeoPolyline.
• Search: Deprecated the following Contact fields landlinePhoneNumbers, mobilePhoneNumbers, emailAddresses, websiteAddresses. Use these newly introduced fields instead: landlinePhones, mobilePhones, emails, websites. Each holds a list of newly created classes LandlinePhone, MobilePhone, EmailAddress, WebsiteAddress - containing a string representation of the item and a list of related PlaceCategory values.
• Call the newly introduced static call MapView.deinitialize() in your AppDelegate class inside the applicationWillTerminate(_:) method to free resources of the HERE Rendering Engine. This will prevent potential crashes when closing an application.
• The free flow traffic layer does no longer render the green traffic flow lines. In the future, an API to enable / disable the flow is planned to be introduced.
• The SDKNativeEngine now locks access to the map data cache. When another instance of SDKNativeEngine is instantiated with the same access key id then now an exception is thrown.
• MapView: Added clamping to principal point when the coordinates are outside of the viewport.
• Maneuver: Deprecated roadName, roadNameLanguageCode, roadNumber, nextRoadName, nextRoadNameLanguageCode, nextRoadNumber. Added instead RoadTexts with roadTexts and nextRoadTexts and LocalizedText and LocalizedTexts.

#### Resolved Issues

• Fixed: A MapPolyline may be unexpectedly rendered over a MapMarker.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• When SDKOptions is created before initialization of SDKNativeEngine it may contain a corrupted path.

### Version 4.5.4.0

#### Highlights

• The supported device specifications have been fine tuned and contain now more granular details on the supported devices. Details can be found in the About section of the Developer's Guide for this edition.

#### New Features

• Added support for a transform center: The MapCamera know allows to set and get a principal point as Point2D. This point determines where the target is placed within the map view. With this you can, for example, lower the map's default center as it will affect map transformations such as rotations and tilt.
• Extended walk routing options: Added PedestrianOptions.walkSpeedInMetersPerSecond property. Note that this feature is released as beta. By setting a walk speed you can calculate pedestrian routes specific for different walk profiles.
• Searching for a CategoryQuery within a GeoCircle or GeoBox is no longer marked as a beta feature.
• Added new map cache options to SDKOptions with SDKOptions.cacheSizeInBytes and SDKOptions.persistentMapStoragePath. Also available as key in plist (CacheSizeInBytes, PersistentMapStoragePath). With this you can control where to store cached map data and it also allows to specify the amount of data you want to reserve for caching.

#### API Changes

• Changed PedestrianOptions(routeOptions, textOptions) constructor to PedestrianOptions(routeOptions, textOptions, 1.0) to support the new PedestrianOptions.walkSpeedInMetersPerSecond property (see above).

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• A MapPolyline may be unexpectedly rendered over a MapMarker.

### Version 4.5.3.0

#### New Features

• Added a NoticeCode that describes issues after a Route was calculated. For example, when a route should avoid tunnels, but the only possible route needs to pass a tunnel, the Route contains a notice that the requested avoidance of tunnels was violated. Therefore, it is recommended to always check a calculated Route for possible violations. The NoticeCode is part of a Notice object. A list of possible Notice objects can be accessed per Section of a Route. The list will be empty, when no violation occurred.
• Addeded the ability to change the anchor point of a MapMarker with Anchor2D. By default, the marker is centered on the provided location and the anchor is at (0.5, 0.5). An anchor represents a point in a rectangle as a ratio of the marker's image width and height.
• Added search for a CategoryQuery within a GeoCircle or GeoBox. Extended the existing CategoryQuery constructors to accept GeoCircle or GeoBox. Note that this feature is currently in BETA state.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• A MapPolyline may be unexpectedly rendered over a MapMarker.

### Version 4.5.2.0

#### Highlights

• Added suppport for scooter route calculation with the new ScooterOptions. Note that this is a BETA feature. Using scooter routes for navigation is not yet supported.

#### New Features

• Added new read-only property to MapPolyline with geometry: GeoPolyline.
• Added DashPattern class to set dashed line styles for a MapPolyline.
• Added the property dashFillColor: UIColor? to MapPolyline to add support for fill colors when using dashed lines.
• Added cumulative orbit method to MapCamera to rotate the map around arbitrary view coordinates using relative orientation values with orbitBy(_ delta: MapCamera.OrientationUpdate, around origin: Point2D).
• Added new initialization options to MapImage extension with:
• public convenience init(from uiImage: UIImage)
• public convenience init(named name: String, width: Int32, height: Int32, in bundle Bundle? = nil)

#### API Changes

• Cache path to store map data is now unique per access key ID (which is unique per customer). The HERE SDK automatically appends the current version of the cache and the access key ID. If you want to keep existing cache data, it may be required to copy it from <cache-root> to <cache-root>/v1/<access-key-id>, as the current version of the cache is "v1".
• Deprecated SDKNativeEngine.setAccessKey(access_key_id, access_key_secret). Use SDKNativeEngine.setAccessKeySecret(access_key_secret) instead, in combination with setting the access key ID via SDKOptions when constructing a new SDKNativeEngine.
• Deprecated LocationUpdateDelegate. Use the new LocationDelegate instead.
• Removed deprecated GeoCircle constructor that accepts single precision float type for radius.

#### Resolved Issues

• Fixed: Embedded POI markers are not visible for the hybrid night map scheme.
• Fixed: Pan gestures may receive a cancel event before a begin event.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.

### Version 4.5.1.0

#### Highlights

• Improved cold startup time on certain devices like Samsung.

#### New Features

• Introduced Maneuver.lengthInMeters property to return the length of the maneuver.
• Added a new MapCameralimits property with targetArea: GeoBox?. This allows to set a target area preventing a user from moving away too much from a desired area of interest.
• Added a new MapCameralimits property for bearing with bearingRange: AngleRange.
• Introduced SectionTransportMode enum and Section.getSectionTransportMode property returning an instance of this type indicating now transport modes such as ferries. Section.getTransportMode has been deprecated, use the newly introduced method instead.
• Search: Introduced SupplierReference type and Details.references property, which holds the list of supplier references to a place.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.
• Embedded POI markers are not visible for the hybrid night map scheme.
• Pan gestures may receive a cancel event before a begin event.

### Version 4.5.0.0

#### Highlights

• Added route calculation for electric vehicles (EV). It's now possible to calculate the energy consumption per route section according to the given consumption model (supported for electric cars and trucks). Charging stations are automatically added to the calculated route as waypoints to ensure that the electric vehicle doesn't run out of energy along the way (supported for electric cars).

#### New Features

• Added LogAppender protocol to insert your own log class into the SDKNativeEngine. This way you can log HERE SDK messages for various predefined log levels even on release builds.
• Added a scale property to change the size of a MapMarker3D.
• Added camera tilt limits with MapCameraLimits.setMaxTilt(degreesFromNadir: Double) and MapCameraLimits.setMinTilt(degreesFromNadir: Double).
• Added camera zoom limits with MapCameraLimits.setMaxZoomLevel(_ zoomLevel: Double) and MapCameraLimits.setMinZoomLevel(_ zoomLevel: Double).
• Added new methods to calculate routes for electric vehicles (car and trucks are supported): RoutingEngine.calculateRoute([Waypoint], EVCarOptions, CalculateRouteCallback), RoutingEngine.calculateRoute([Waypoint], EVTruckOptions, CalculateRouteCallback).
• Added the following classes and fields to support EV routing (see above):
• BatterySpecifications - parameters that describe the electric vehicle's battery.
• ChargingConnectorAttributes - details of the connector that is suggested to be used for charging.
• ChargingConnectorType - enumeration of the available charging connector types.
• ChargingStation - charging station data.
• ChargingSupplyType - enumeration of available charging supply types.
• EVCarOptions - options to specify how a route for an electric car should be calculated.
• EVConsumptionModel - parameters specific for the electric vehicle, which are used to calculate energy consumption on a given route.
• EVDetails - additional information that is available for electric vehicles.
• EVTruckOptions - options to specify how a route for an electric truck should be calculated.
• PostActionType - enumeration of available post action types.
• PostAction - an action that must be done after arrival.
• RoutePlaceType - shows whether the place on the route (such as departure or arrival) is a charging station or a regular place.
• Arrival.type - the type of the arrival place.
• Arrival.chargeInKilowattHours - battery charge at arrival.
• Arrival.chargingStation - charging station data at arrival.
• Departure.type - the type of the departure place.
• Departure.chargeInKilowattHours - battery charge at departure.
• Departure.chargingStation - charging station data at departure.
• Section.postActions - actions that must be done after the arrival.
• Section.evDetails - additional section information that is available for electric vehicles.

#### API Changes

• The minimum supported iOS version was increased from 12.0 to 12.4.
• For custom map styles HERE Style Editor 0.26 is required.
• Changed splash screen to be grey instead of black. This improves the experiences on devices where cold start takes longer.
• Removed a deprecated GeoCoordinates constructor, use the previously introduced counterpart instead.
• Changed type of MapMarker.drawOrder from UInt32 to Int32.
• Removed a deprecated Anchor2D constructor, use the previously introduced counterpart instead.

#### Resolved Issues

• Fixed: After orientation changes coordinate conversions may return incorrect values.
• Fixed: A category search along a route will crash when the GeoCorridor.polyline list parameter is empty.
• Fixed wrongly positioned Viewpins after an orientation change.

#### Known Issues

• Updating an existing MapMarker with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image.
• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• The jamFactor indicating TrafficSpeed is currently calculated linear without taking road types and other parameters into account.

### Version 4.4.6.0

#### Highlights

• This release focuses on overall stability and performance improvements.

#### Known Issues

• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• After orientation changes coordinate conversions may return incorrect values.
• A category search along a route will crash when the GeoCorridor.polyline list parameter is empty.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.
• When traffic flows are enabled, map gestures may behave slower than expected.
• A Maneuver.polyline list of GeoCoordinates has only one element for the last maneuver of a route.
• MapMarker3D instances are only partly rendered when the camera is positioned too far from earth.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.

### Version 4.4.5.0

#### New Features

• Added the property var image: MapImage { get set } to the MapMarker class. This allows to change a MapImage for a MapMarker that is already shown on the map to update its appearance.
• Added zoomTo(_ zoomLevel) -> Void to the MapCamera class to set the zoom level in the range [0,22]. Access the current zoomLevel from the camera's State property.
• Added GeoBox.containing(geoCoordinates: [GeoCoordinates]) -> GeoBox? to construct a GeoBox from a list of Geocoordinates.
• A CategoryQuery can now be created from a single PlaceCategory with the additional constructor CategoryQuery(_ category: PlaceCategory, filter: String, areaCenter: GeoCoordinates).

#### Resolved Issues

• Fixed: In rare cases map tiles may flicker when a device is offline and the cache is used.

#### Known Issues

• The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• After orientation changes coordinate conversions may return incorrect values.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• A category search along a route will crash when the GeoCorridor.polyline list parameter is empty.
• MapViewPin instances disappear from MapView when changing device orientation. They reappear when moving the map.
• MapViewPin instances cannot be removed after tilting and panning the map.

### Version 4.4.4.0

#### Highlights

• Added automatic geometry simplification to MapPolyline: Now, the rendered polyline shape is optimized based on the current distance of the camera to earth. While not being visible for the eye, this improves the performance, for example, when rendering longer routes.

#### API Changes

• here.sdk.Color derives now from UIColor to support the deprecation of the class.

#### Deprecated

• A few methods, fields and constructors of class here.sdk.Color have been deprecated. Instead, use iOS's native UIColor class which uses a color component of type CGFloat with the interval [0,1] - instead of type UInt8 and [0,255] that was used for the deprecated components.

#### Resolved Issues

• Fixed several memory corruption crashes.
• Fixed an issue with flickering street labels after credentials have been changed.
• Fixed issue with empty IDs for reverse geocoding results: IDs of place results are no longer empty strings and contain now a valid ID.
• Route calculation: When no truck route is found due to incompatible truck restrictions, the reason is now logged and RoutingError.noRouteFound error is returned. For example, a log may contain: "Potential route would violate truck restriction:{"maxHeight":400}".

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• After orientation changes coordinate conversions may return incorrect values.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• In rare cases map tiles may flicker when a device is offline and the cache is used.

### Version 4.4.3.0

#### Highlights

• Kinetic map panning behavior was greatly improved. Now, when swiping the map moves slower which results in a more natural feel.
• Certain areas can now be excluded from route calculation with AvoidanceOptions that contain an avoidAreas list holding GeoBox items which routes should not cross.

#### New Features

• Added optional Suggestion.href to get a direct link to discover more details. It is available when the suggestion result type is category or chain.
• Added RoadFeatures.difficultTurns enum value. Note that it is valid only for truck transport mode.
• Added MapError.invalidState enum value which can be raised when a map scene is in an invalid state after a MapView was destroyed.
• Added a new GeoCorridor constructor with radiusInMeters as integer type - as replacement for the deprecated constructor with radiusInMeters as double type, see below.

#### Deprecated

• Deprecated GeoCorridor constructor with radiusInMeters as double type. Use the newly introduced GeoCorridor constructor with radiusInMeters as integer type instead, see above.

#### Resolved Issues

• Fixed: When the pick radius for pickMapItems() is set to 1000 or higher, an app may crash when picking map polylines.
• Fixed: SearchEngine: Place.getId() is empty for reverse geocoding results.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Transparency for MapPolylines is not supported.
• After orientation changes coordinate conversions may return incorrect values.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
• In rare cases map tiles may flicker when a device is offline.

### Version 4.4.2.0

#### New Features

• Added Place.geoCoordinates to get the GeoCoordinates of a Place. Note that only Place instances retrieved from a Suggestion result may not contain geographic coordinates, hence the returned value is optional.
• Added departure/arrival information to the Section of a Route:
• Added Departure class with the following fields:
• waypointIndex
• originalCoordinates
• mapMatchedCoordinates
• Added Arrival class with the following fields:
• waypointIndex
• originalCoordinates
• mapMatchedCoordinates
• Added Section.departure property.
• Added Section.arrival property.
• Added Suggestion.type to get the new SuggestionType enum that indicates whether this Suggestion is a place, a chain like a store, restaurant or bussiness chain - or a category.

#### Deprecated

• Deprecated Place.coordinates, use Place.geoCoordinates instead. Note that only Place instances retrieved from a Suggestion result may not contain geographic coordinates, hence the returned value has become optional.

#### Resolved Issues

• Fixed: When the Route used to search along the route is too long, now a proper error is returned with SearchError.ROUTE_TOO_LONG.
• Fixed: For places that are obtained from the Suggestion class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• SearchEngine: Place.getId() is empty for reverse geocoding results.
• Transparency for MapPolylines is not supported.
• After orientation changes coordinate conversions may return incorrect values.
• When the pick radius for pickMapItems() is set to 1000 or higher, an app may crash when picking map polylines.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.

### Version 4.4.1.0

#### New Features

• Traffic flows can now be identified along a Route. Introduced TrafficSpeeds class to provide traffic speed information over a Section polyline. The Section.trafficSpeeds property returns an array of TrafficSpeeds's which covers the Section polyline.
• Added SearchError.queryTooLong and SearchError.filterTooLong. These errors will appear if the search query or search filter is too long (over 300 characters).
• Added Route.transportMode which returns the original TransportMode as requested for the route calculation.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• SearchEngine: Place.getId() is empty for reverse geocoding results.
• Transparency for MapPolylines is not supported.
• After orientation changes coordinate conversions may return incorrect values.
• When the pick radius for pickMapItems() is set to 1000 or higher, an app may crash when picking map polylines.
• For places that are obtained from the Suggestion class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.
• Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.

### Version 4.4.0.2

#### Highlights

• New map schemes have been introduced to support satellite images together with vector-based street labels: hybridDay and hybridNight.

#### New Features

• Added to the MapCamera class the method: MapCamera.setTargetOrientation(orientation: MapCamera.OrientationUpdate) to set only the target orientation in relation to the camera.
• By default, polylines are rendered in the order as they have been added to the map. This can now be changed at runtime by setting the draw order. It's now also possible to change the width and outline width at runtime. For this, the following methods have been added to the MapPolyline class:
• var drawOrder: Int32 to set and get the drawOrder for MapPolylines.
• var width: Double to set and get the LineWidth for a MapPolyline.
• var outlineWidth: Double to set and get the OutlineWidth for a MapPolyline.
• Search for places along a route: Added the GeoCorridor option to filter TextQuery results when performing an asynchronous search request along a route with the method TextQuery(query, in: corridorArea, near: areaCenter).
• Search for places by category along a route: Added the CategoryQuery structure that accepts the GeoCorridor option in its constructors with the filter parameter CategoryQuery(_ : [PlaceCategory], filter: String, in: GeoCorridor) and without the filter parameter CategoryQuery(_ : [PlaceCategory], in: GeoCorridor) to enable category search along a route. This feature is in BETA state.
• Added to the Details class the method: getPrimaryCategories() -> [PlaceCategory] to get a place category from the result of a search query.

#### API Changes

• Reduced the rotation sensitivity of the Pinch Rotate gesture. Now, it is easier to zoom in on the map without rotating it.

#### Resolved Issues

• Fixed: Rendering order for MapMarker3D is not yet supported, so the marker may appear below building footprints. Now, the rendering order for MapMarker3D is supported and the marker no longer appears below building footprints.
• Fixed several rendering issues related to map items.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• SearchEngine: Place.getId() is empty for reverse geocoding results.
• Transparency for MapPolylines is not supported.
• After orientation changes coordinate conversions may return incorrect values.
• When the pick radius for pickMapItems() is set to 1000 or higher, an app may crash when picking map polylines.
• For places that are obtained from the Suggestion class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.

### Version 4.3.4.0

#### New Features

• Added the line cap style property to MapPolyline with the enum LineCap to change polyline ends rendered on the map.
• Added the property lineCap: LineCap to get and set the LineCap of a MapPolyline.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• SearchEngine: Place.getId() is empty for reverse geocoding results.
• Transparency for MapPolylines is not supported.
• Rendering order for MapMarker3D is not yet supported, so the marker may appear below building footprints.
• After orientation changes coordinate conversions may return incorrect values.

### Version 4.3.3.0

#### New Features

• Added the method search(placeIdQuery query: PlaceIdQuery, languageCode: LanguageCode?, completion: PlaceIdSearchCompletionHandler) -> TaskHandle to perform an asynchronous request to search for a place based on its ID and language code.
• Added the possibility to filter AddressQuery results by the CountryCode with the method AddressQuery(query: String, near: GeoCoordinates, inCountries: [CountryCode]).
• Added the possibility to filter TextQuery results by the CountryCode with the method TextQuery(query: String, near: GeoCoordinates, inCountries: [CountryCode]).
• Added the methods MapPolyline.getlineColor() and MapPolyline.setlineColor() to get and set the LineColor of a MapPolyline.
• Added the methods MapPolyline.getOutlineColor() and MapPolyline.setOutlineColor() to get and set the OutlineColor of a MapPolyline.

#### Deprecated

• Deprecated the method search(placeIdQuery query: PlaceIdQuery, completion: PlaceIdSearchCompletionHandler) -> TaskHandle. Use the newly introduced search(placeIdQuery query: PlaceIdQuery, languageCode: LanguageCode?, completion: PlaceIdSearchCompletionHandler) -> TaskHandle method instead.

#### Resolved Issues

• Fixed: App crashes when access to memory storage is denied. Now, access to the memory storage is granted by setting the path to the map cache.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• SearchEngine: Place.getId() is empty for reverse geocoding results.
• Transparency for MapPolylines is not supported.
• Rendering order for MapMarker3D is not yet supported, so the marker may appear below building footprints.

### Version 4.3.2.0

#### New Features

• Added the ManeuverProgress class which is accessible from RouteProgress.maneuverProgress to indicate progress details to the next and next-next maneuvers during navigation.
• Added the readonly property MapCamera.boundingBox: GeoBox? to get the currently visible map area encompassed in a GeoBox.
• Added the nested class MapView.ViewPin to display an iOS UIView at a fixed location on the MapView with the following methods and read-only properties:
• pinView(_ view: UIView, at: GeoCoordinates) -> ViewPin? to pin a UIView on the MapView.
• unpinView(_ view: UIView) to remove a UIView pinned to the MapView.
• viewPins: [MapView.ViewPin] to get the UIView instances pinned on the MapView.
• Added the method MapCamera.setDistanceToTarget(distanceInMeters: Double) -> Void to set the distance from the MapCamera to the target location on earth.
• Added the ability to change the primary language of the map with the property MapView.primaryLanguage: LanguageCode?.
• Added updated support for the SDKOptions.cachePath handling. If SDKOptions.cachePath is not set, it will be assigned a default path [<Application Home>/Library/Caches].

#### Resolved Issues

• Fixed: The Authentication protocol was not always called on the main thread. Now the protocol is guaranteed to be always called on the main thread.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Map tiles are not loaded and some assets are missing when building an app for distribution. As a workaround, apps need to be built for a release in Xcode without bitcode recompilation.
• SearchEngine: Place.Id is empty for reverse geocoding results.
• Transparency for MapPolylines is not supported.
• Rendering order for MapMarker3D is not yet supported, so the marker may appear below building footprints.

### Version 4.3.1.0

#### New Features

• Added the MapMarker.drawOrder property to change the draw order of MapMarkers on the map.
• Added the support for 3D MapMarkers with the classes MapMarker3D and MapMarker3DModel to represent and define a 3D shape rendered on the map.
• Added the methods MapScene.addMapMarker3d(_ marker: MapMarker3D) -> Void and MapScene.removeMapMarker3d(_ marker: MapMarker3D) -> Void to add and remove a 3D MapMarker.
• Added the Rectangle2D constructor that accepts type double for the origin and size parameters to represent a 2D rectangle.
• Added the Size2D constructor that accepts type double for the height and width parameters to represent the size of a 2D structure.
• Added the MapPolyline.metadata property for the Metadata forMapPolylines.

#### Resolved Issues

• Fixed: AvoidanceOptions will be ignored when calculating truck routes. Now, AvoidanceOptions are considered when calculating truck routes.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Map tiles are not loaded and some assets are missing when building an app for distribution. As a workaround, apps need to be built for a release in Xcode without bitcode recompilation.
• SearchEngine: Place.Id is empty for reverse geocoding results.
• Transparency for MapPolylines is not supported.
• Rendering order for MapMarker3D is not yet supported, so the marker may appear below building footprints.

### Version 4.3.0.0

#### New Features

• Added the GeoCoordinates(latitude: Double, longitude: Double, altitude: Double) constructor.
• Added the GeoCircle() constructor that accepts type double for the radius parameter.
• Added support for map circles: Added the GeoPolygon(@NonNull GeoCircle geoCircle) constructor, which can then be used to create a MapPolygon that has the shape of a circle.
• Added the Anchor2D() constructor that accepts type double for the horizontal and vertical parameters.
• Added the MapView.pixelScale read only property to get the pixel scale used by MapView.
• Added the MapPolygon.updateGeometry(_ geometry: GeoPolygon) method to update its shape on-the-fly.
• Added outlines for map polylines with MapPolyline(geometry: GeoPolyline, widthInPixels: Double, color: Color, outlineWidthInPixels: Double, outlineColor: Color).
• Added the MapView.setWatermarkPosition(placement: WatermarkPlacement, bottomCenterMargin: UInt32) method to set the watermark's position on the MapView.
• Added the WatermarkPlacement enum.
• Added the following to the com.here.sdk.search package:
• AddressQuery to specify an address query.
• CategoryQuery to specify a query by categories.
• Contact that represents the contact information.
• IdQuery to specify an id query.
• OpeningHours to represent the information on opening hours.
• Place to represent a location object, such as a country, a city, a point of interest(POI) etc.
• PlaceCategory to define a set of most commonly used categories.
• ScheduleDetails to encapsulate schedule details complying with the iCalendar specification.
• Suggestion to represent a suggestion of an address or a place based on a query.
• TextQuery option to specify a text query.
• Added the following methods to SearchEngine:
• search(idQuery query: IdQuery, completion: IdSearchCompletionHandler) -> TaskHandle to search for a place based on its ID.
• search(_ query: CategoryQuery, options: SearchOptions, completion: SearchCompletionHandler) -> TaskHandle to search for places based on a list of categories.
• Added the structure Details to the Place object. It contains following fields:
• categories for the list of categories assigned to the place.
• contacts for the contact list of the place.
• openinghours for the list of information on the opening hours of the place.
• Added the optional parameter public init(accessKeyId: String, accessKeySecret: String, cachePath: String, authenticationPreferences: AuthenticationPreferences = AuthenticationPreferences.useServerTime) of type AuthenticationPreferences to the SDKOptions constructor to use the local system time for authentication instead of getting it from the server.

#### API Changes

• Changed type of GeoCoordinates.altitude from float to double.
• Changed type of MapPolyline() constructor from float to double for the widthInPixels parameter.
• Changed type of MapView.pickMapItems() from float to double for the radius parameter.
• Changed the return type of Route.durationInSeconds from Int64 to Int32.
• Changed the return type of Route.trafficDelayInSeconds from Int64 to Int32.
• Changed the return type of Section.durationInSeconds from Int64 to Int32.
• Changed the return type of Section.trafficDelayInSeconds from Int64 to Int32.
• Changed the return type of SectionProgress.remainingDurationInSeconds from Int64 to Int32.
• Changed the return type of SectionProgress.trafficDelayInSeconds from Int64 to Int32.
• Changed the MapView.getGestures() method to be the MapView.gestures read only property.
• Changed the following MapMarker initializers:
• MapMarker(at: GeoCoordinates, resource: MapImage) to MapMarker(at: GeoCoordinates, image: MapImage).
• MapMarker(at: GeoCoordinates, resource: MapImage, anchor: Anchor2D) to MapMarker(at: GeoCoordinates, image: MapImage, anchor: Anchor2D).
• Changed the method in the PanDelegate from onPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Float) -> Void to onPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Double) -> Void.
• Changed the method in the PinchRotateDelegate from onPinchRotate(state: GestureState, pinchOrigin: Point2D, rotationOrigin: Point2D, twoFingerDistance: Float, rotation: Angle) -> Void to onPinchRotate(state: GestureState, pinchOrigin: Point2D, rotationOrigin: Point2D, twoFingerDistance: Double, rotation: Angle) -> Void.
• Changed the method in the TwoFingerPanDelegate from onTwoFingerPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Float) -> Void to onTwoFingerPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Double) -> Void.
• Removed the MapCamera.OrientationUpdate.roll property.
• Removed the MapCamera.OrientationUpdate(bearing: Double? = nil, tilt: Double? = nil, , roll: Double? = nil) constructor.
• Removed the MapMatchedWaypoint class.
• Removed the RouteRestrictions struct.
• Removed the SideOfStreet enumeration.
• Removed the Route.mapMatchedWaypoints property.
• Removed the transparency support for MapPolylines.
• Removed the protocol Searchable.
• Replaced Suggestion.searchable with Suggestion.place.
• Removed the AutosuggestEngine, GeocodingEngine, and ReverseGeocodingEngine. Their functionalities are now integrated into the SearchEngine class:
• Use SearchEngine.search(textQuery:options:completion:) to search for Places.
• Use SearchEngine.search(addressQuery:options:completion:) to geocode an address to a geographic coordinate. Now, geocoding is limited to GeoCoordinates. GeoBox and GeoCircle are dropped.
• Use SearchEngine.search(coordinates:options:completion:) to reverse geocode a geographic coordinate to an address.
• Use SearchEngine.search(categoryQuery:options:completion:) to search for Places based on a list of categories.
• Use SearchEngine.suggest(textQuery:options:completion:) to search for auto suggested Place results.
• Replaced SearchCategory with SearchEngine.search(_ query: CategoryQuery, options: SearchOptions, completion: SearchCompletionHandler) -> TaskHandle.
• Replaced the CategoryId class with the PlaceCategory class.
• Replaced the SearchResult class with the Place class.
• Replaced the SearchEngine.CompletionHandler, GeocodingEngine.CompletionHandler, and the ReverseGeocodingEngine.CompletionHandler by the SearchCompletionHandler class.
• Replaced the AutosuggestEngine.CompletionHandler with the the SuggestCompletionHandler class.
• Removed the following classes and their functionalities:
• AutosuggestResultType
• GeocodingResult
• Removed the AutosuggestResult class. Its functionalities have now been moved to the Suggestion class.
• Removed the field textformat from the SearchOptions class.
• Removed the function defaultOptions: SearchOptions.
• Removed the following constructors from the SearchEngine:
• init(defaultOptions: HLSSearchOptions).
• init(_ sdkEngine: SDKNativeEngine, defaultOptions: HLSSearchOptions).
• Removed the BicycleOptions from the transport mode options for route calculation.
• OptimizationMode.shortest is no longer supported and now automatically converted to OptimizationMode.fastest for the transport mode option TransportMode.pedestrian.

#### Deprecated

• Deprecated the GeoCoordinates(latitude: Double, longitude: Double, altitude: Float) constructor. Use the GeoCoordinates(latitude: Double, longitude: Double, altitude: Double) constructor instead.
• Deprecated the GeoCircle() constructor that accepts type float for the radius parameter. Use the GeoCircle() constructor that accepts type double for the radius parameter instead.
• Deprecated the Anchor2D() constructor that accepts type float for the horizontal and vertical parameters. Use the Anchor2D() constructor that accepts type double for the horizontal and vertical parameters instead.

#### Resolved Issues

• Fixed: Engines will not operate when the time of the device is incorrect. Now, the timestamp of the device is authenticated to enable the engines to operate.
• Fixed: Map marker images may flicker when removing or adding new markers.
• Fixed: A green or black screen may appear for a few milliseconds when loading a map view.
• Fixed: Map polylines may disappear when zooming out too far.
• Fixed: Loading a map scene may be slower for debug builds on devices and simulators.

#### Known Issues

• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Map tiles are not loaded and some assets are missing when building an app for distribution. As a workaround, apps need to be built for a release in Xcode without bitcode recompilation.
• SearchEngine: Place.Id is empty for reverse geocoding results.
• AvoidanceOptions will be ignored when calculating truck routes.
• Transparency for MapPolylines is not supported.

### Version 4.2.2.0

#### New Features

• Added new built in map schemes: MapScheme.greyDay and MapScheme.greyNight to be used with the MapScene.loadScene() function.
• Added two new layer names: TRAFFIC_FLOW and TRAFFIC_INCIDENTS to the MapScene.Layers struct to be used for switching on/off traffic flow and incidents with the MapScene.setLayerState() function.
• Added SVG support with MapImage(filePath: String, width: UInt32, height: UInt32) constructor that supports SVG Tiny images.

#### API Changes

• Removed the deprecated field OrientationUpdate.azimuth. Use OrientationUpdate.bearing instead.

#### Resolved Issues

• Fixed: Map objects still appear on the wrong map scene after they have been removed.
• Fixed: Adding or moving a map marker is now done instantly, without a fade in delay.

#### Known Issues

• Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Map marker images may flicker when removing or adding new markers.
• A green or black screen may appear for a few milliseconds when loading a map view.
• Map polylines may disappear when zooming out too far.
• Map tiles are not loaded and some assets are missing when building an app for distribution. As a workaround, apps need to be built for a release in Xcode without bitcode recompilation.
• Loading a map scene may be slower for debug builds on devices and simulators.
• Custom map styles will no longer work until converted with a new editor that is not yet released.

### Version 4.2.1.0

#### New Features

• Added MapCamera.State to access full information about the camera's state.
• Added MapPolyline.updateGeometry(_ geometry: GeoPolyline) to update the polyline shape.
• Added MapScene.setLayerState(String layerName, LayerState state) to identify the layer names which are passed to setLayerState().
• Added class MapCameraObserver to get updates whenever the map is redrawn after camera parameters change.
• Added methods MapCamera.addObserver(_ observer: MapCameraObserver) and MapCamera.removeObserver(_ observer: MapCameraObserver) to add and remove an observer to the camera.
• Added Authentication API to obtain a valid token that can be used to initiate queries to HERE REST APIs.

#### API Changes

• Replaced enum type RoadType.street with RoadType.rural and RoadType.urban.

#### Deprecated

• The field MapCamera.OrientationUpdate.azimuth is deprecated. Use the newly introduced MapCamera.OrientationUpdate.bearing instead.
• The field MapCamera.OrientationUpdate.roll is now deprecated.

#### Resolved Issues

• Fixed: When the map is tilted, map polylines may look incorrect.

#### Known Issues

• Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Map marker images may flicker when removing or adding new markers.
• When loading a map view a green or black screen may appear for a few milliseconds.
• Map polylines may disappear when zooming out too far.
• Map tiles are not loaded and some assets are missing when building an app for distribution. As a workaround, apps need to be built for a release in Xcode without bitcode recompilation.

### Version 4.2.0.0

#### Highlights

• This is the initial release.

#### New Features

• Added Swift module stability for the HERE SDK XCFramework to allow forward-compatibility with future Swift versions. The current framework is built using Swift 5.1.2, but it should be also readable for future Swift compiler versions.

#### Known Issues

• Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.
• Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
• Map marker images may flicker when removing or adding new markers.
• When loading a map view a green or black screen may appear for a few milliseconds.
• Map polylines may disappear when zooming out too far.
• When the map is tilted, map polylines may look incorrect.