Release Notes
We are pleased to announce the availability of version 4.14.3.0 (Navigate 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.14.3.0
New Features
- Added 'MapScheme.liteDay', 'MapScheme.liteNight', 'MapScheme.liteHybridDay', 'MapScheme.liteHybridNight' schemes, which are the simplified versions of the respective normal map schemes. These simplified scheme variants serve well as background for more complex content such as public transit lines.
-
MapView
: Improved map styles to render overlapping roads based on their z-level attribute. - This version of the HERE SDK is delivered with map data v82 for
CatalogType.optimizedClientMap
catalog and v67 for CatalogType.optimizedClientMapJapan
catalog. - Added
RoutePrefetcher.prefetchGeoCorridor()
to prefetch tile data for an entire GeoCorridor
. This new API performs an asynchronous operation to download data for all enabled feature configurations along the route corridor. The progress of the prefetching operation is reported through the PrefetchStatusListener.onProgress()
protocol. Once the operation is completed, the result is communicated via PrefetchStatusListener.onComplete()
. Note that this is a beta release. - Realistic views: Added a free-to-use font package. Find the
SignpostFonts.zip
package in your release package. The TTF fonts and accompanying license files can be found inside the ZIP file. These fonts are required to render RealisticView
SVG content during turn-by-turn navigation. A usage example can be seen in the chapter on realistic views in our Developer's Guide.
Resolved Issues
- Navigation: For
realisticView.signpostSvgImageContent
there are no longer issues with font overflows for most countries. A font package is now included. Only two packages for THA and ARA are still missing (see known issues). - Navigation: Fixed an issue for too slow
SpeedLimit
information during guidance caused by a CVR misinterpretation. - Navigation: Fixed a visual issue with sharp turns. Now the animation (and the location indicator) follows the route precisely.
- It is no longer necessary to load the
optimizedClientMapJapan
map catalog after the optimizedClientMap
catalog. The order no longer matters.
Known Issues
- The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
3DMapMarker
: Loading textures is currently not working as expected and 3DMapMarker
items may not be visible. The libpng
library is not fully supported by iOS. As a workaround, do not compress PNG content in your Xcode project setup (COMPRESS_PNG_FILES = NO; STRIP_PNG_TEXT = NO;
). -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Navigation: The
SignpostFonts.zip
package which is included in the release package is missing two TTF font families: DejaVuSans.ttf
contains Thai (THA) fonts and supports Thailand. And THSarabunPSK-Bold.ttf
, which contains Arabic (ARA) fonts and supports Israel, Kuwait, Bahrain, Egypt, Morocco, Oman, Qatar, Saudi Arabia, United Arab Emirates. For the affected countries, there can be issues with font overflows (ie. the text of a signpost shield might appear too big) when rendering realisticView.signpostSvgImageContent
. - Navigation:
SpeedLimit
information reported for trucks in tracking mode may be inaccurate - even when setting the transport mode as tracking TransportProfile
. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
OfflineRoutingEngine
: Offline route calculation may take too long or result in detours when the route crosses a country border in Baltic countries. Sometimes, no route can be found. Other countries may be also affected. As a workaround, it is recommended to restart the application after a map update has been performed. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Changes from Previous Releases
This section documents major changes from past releases. We encourage you to use the latest release, 4.14.3.0.
Version 4.14.2.0
New Features
-
MapView
: Added more mountain range labels for all preconfigured MapScheme
styles. -
MapView
: Enhanced pick support for carto POIs. Pick results of type PickMapContentResult.PoiResult
make now use of a new internal OCM annotation layer that allows to pick POIs that have not been pickable before. Note that the offlineSearchId
field is always empty for such pick results. - Indoor Maps: In order to make it easier to search for
VENUES
when viewing the map at high zoom levels, we now display the venue structure as a patch: This patch enables the venue to be visible even when the map is zoomed out. Note that this happens automatically and does not require any changes on app-side. -
MapView
: Enabled visualization of exit number displays for access restricted streets for all preconfigured MapScheme
styles. -
MapView
: Improved the visualization and the hierarchy of city labels for the preconfigured map styles. - This version of the HERE SDK is delivered with map data v80 for
CatalogType.optimizedClientMap
catalog and v67 for CatalogType.optimizedClientMapJapan
catalog.
Resolved Issues
- Navigation: The visual representation of the lanes to take at a complex junction is now highlighted as expected for
realisticView.junctionViewSvgImageContent
: The lanes to take are shown in blue color instead of green. - Navigation: Fixed an issue with
SpeedLimits
notifications related to SpeedLimitDelegate
. - Navigation: Aligned the font family names contained in the SVG for
RealisticView
signposts. The font assets are planned to be provided with the next release. Until then, font overflow issues may still happen. - Navigation: Fixed irrelevant
continueOn
maneuver notifications for FRC4 or FRC5 roads. - Navigation: Fixed diacritics for the word
then
in the voice package for Arabic to improve the pronunciation by TTS engines. - Natural Guidance: Internally, the HERE SDK avoids now access to map data when processing location updates and preloads map data based on predictions using an optimized most-probable-path algorithm.
Known Issues
- The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - When setting the
optimizedClientMapJapan
map catalog, then the optimizedClientMap
catalog has to be set (or loaded) first - or unexpected behavior and visual defects may occur. - Navigation: For
realisticView.signpostSvgImageContent
there can be issues with font overflows (ie. the text of a signpost shield might appear too big). - Navigation:
SpeedLimit
information reported for trucks in tracking mode may be inaccurate - even when setting the transport mode as tracking TransportProfile
. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
OfflineRoutingEngine
: Offline route calculation may take too long or result in detours when the route crosses a country border in Baltic countries. Sometimes, no route can be found. Other countries may be also affected. As a workaround, it is recommended to restart the application after a map update has been performed. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.14.1.0
New Features
-
RoadTexts
: Added support for transliteration for offline usage. -
OfflineRoutingEngine
: AvoidanceOptions.zoneCategories
is now supported to avoid environmental zones. - Positioning: Added new value
locationServicesDisabled
to LocationEngineStatus
, which informs that location services are disabled in the system settings of a device. - This version of the HERE SDK is delivered with map data v79 for
CatalogType.optimizedClientMap
catalog and v67 for CatalogType.optimizedClientMapJapan
catalog. - Custom catalogs: Added
AuthenticationMode
in SDKOptions
. This feature is useful when customEngineBaseUrls
are used to self-host backend services. Use AuthenticationMode.withToken(accessToken: String)
to set a custom bearer token as string. If AuthenticationMode.withExternal()
is called, the authentication must be done fully by the client. With AuthenticationMode.withKeySecret(accessKeyId: String, accessKeySecret: String)
you bring back the default behavior, where for each online request a bearer token is set in the header of a request - consisting of the provided credentials. Usually, this is done by the HERE SDK internally. Note: This is a beta release of this feature. -
MapView
: Improved map design by adding public transit access icons as embedded carto POIs based on the General Transit Feed Specification (GTFS). Entrances to transit stations are indicated with a small entrance symbol. These icons are clustered, based on the zoom level, together with the transit station icons we added in our last release. Note that this map feature requires OCM version 79 or higher. -
MapUpdater
: Added CatalogUpdateState
to CatalogUpdateInfo
which contains more information on the current update state.
API Changes - Breaking
- Removed deprecated geo fields and constructors of
sdk.search.TextQuery
and sdk.search.CategoryQuery
. Use newly added constructors taking sdk.search.TextQuery.Area
and sdk.search.CategoryQuery.Area
instead. - Removed deprecated
CategoryQuery.withExcludeCategories
. Please set excludeCategories
directly using categoryQueryObject.excludeCategories
. -
SDKNativeEngine
: Changed ProxySettings.port
type from UInt32
to UInt16
.
Resolved Issues
- Navigation: Fixed missed
passed
event for TruckRestrictionWarning
for overlapping restrictions. -
DynamicRoutingEngine
: Fixed a crash when calling DynamicRoutingEngine.stop()
at an unexpected time. -
MapView
: Improved visualization and names for traffic styles. - Offline search: Fixed indexing support for multiple catalogs when
SDKOptions.enableIndexing
flag is set. -
DynamicRoutingEngine
: Fixed a bug when onBetterRouteFound(..)
is called with 0 difference for ETA and distance.
Known Issues
- The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - When setting the
optimizedClientMapJapan
map catalog, then the optimizedClientMap
catalog has to be set (or loaded) first - or unexpected behavior and visual defects may occur. - Navigation: For
realisticView.signpostSvgImageContent
there can be issues with font overflows (ie. the text of a signpost shield might appear too big). - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Navigation: The visual representation of the lanes to take at a complex junction is not highlighted as expected for
realisticView.junctionViewSvgImageContent
: The lanes to take are shown correctly, but they are shown in green color instead of blue. -
OfflineRoutingEngine
: Offline route calculation may take too long or result in detours when the route crosses a country border in Baltic countries. Sometimes, no route can be found. Other countries may be also affected. As a workaround, it is recommended to restart the application after a map update has been performed. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.14.0.0
New Features
-
OfflineRoutingEngine
: Enabled support for taxi routes. -
OfflineRoutingEngine
: RoadFeatures.uTurns
are now supported for cars, taxis and buses and can be avoided. -
MapView
: Improved the map design for deserts with a polygon display. Note that this is only available for OCM based maps. -
MapView
: Improved the map design with an updated style for unpaved roads. The fill and outline color and the labels of unpaved roads are now styled with a brownish tint. -
RoutingEngine
: RoadFeatures.uTurns
are now supported for cars, taxis and buses and can be avoided. -
MapPolygon
: Added outlineColor
and outlineWidth
properties to enable polygon outlines. - Map data: Added a convenience method to see the default
CatalogConfiguration
. By calling CatalogConfiguration.getDefault(CatalogType)
you can retrieve the HRN string and the map version. This can be useful, when you want to enable extended map data for Japan. Note that CatalogType.optimizedClientMapJapan
is an extended map type that requires the CatalogType.optimizedClientMap
catalog as a base map. If Japan is not set, then the area in Japan is showing limited details on the map view. Get in touch with the HERE team to get access to the enriched Japan map data. Take a look at the Developer's Guide for a usage example. -
OfflineSearchEngine
: Added SDKOptions.enableIndexing
flag that enables an index mechanism to find places in installed Region
data - even if they are far away from the provided search center. This matches the behavior of the online SearchEngine
. When set to false, the behavior or the mentioned APIs remains as before. Defaults to false. If set to true, this flag affects all operations that modify persistent storage content: mapDownloader.downloadRegions()
, mapDownloader.deleteRegions()
, mapDownloader.clearPersistentMapStorage()
, mapDownloader.repairPersistentMap()
, mapDownloader.performMapUpdate()
, mapDownloader.performFeatureUpdate()
, mapDownloader.updateCatalog()
. These methods will ensure that the index is created, deleted or updated to contain entries from Region
data that are installed in the persistent storage. Creating an index takes time and this will make all operations that download or update offline maps longer, but usually not more than a few seconds up to a couple of minutes (depending on the amount of installed offline maps data). The stored index also increases the space occupied by offline maps by around 5%. The performance and space impact will be improved for future releases of the HERE SDK. Note that this is a beta release of this feature. -
MapView
: Improved the map design by adding public transit embedded carto POIs based on the General Transit Feed Specification (GTFS). The icons are automatically clustered based on the zoom level. Note that this map feature requires OCM version 78 or higher. - This version of the HERE SDK is delivered with map data v75 for the
optimizedClientMap
catalog and v67 for the optimizedClientMapJapan
catalog.
API Changes - Breaking
- Navigation: Removed the previously deprecated
routing.TruckSpecifications
. Use instead transport.TruckSpecifications
. - Removed deprecated method
MapView.pickMapFeatures
and class PickMapFeaturesResult
. Use MapView.pickMapContent
and PickMapContentResult
instead. - Routing: Removed deprecated
Section.trafficSpeeds
property. Use instead the Span.trafficSpeed
property. Removed deprecated TrafficSpeed.offset
. Use instead the Span.sectionPolylineOffset
property. - Positioning: Removed the previously deprecated 'LocationEngineStatus.notLicensed' and 'LocationEngineStatus.notCompatible'. The HD GNSS feature is not available for iOS.
- Removed the previously deprecated
mapView.setWatermarkPosition()
method. Use instead mapView.setWatermarkLocation()
. - Search: Removed deprecated
accomodation
, accomodationHotelMotel
and accomodationLodging
constants from PlaceCategory
. accommodation
, accommodationHotelMotel
and accommodationLodging
should be used instead. - Removed deprecated methods
MapCamera.lookAt(point: GeoCoordinates, distanceInMeters: Double)
and MapCamera.lookAt(point: GeoCoordinates, orientation: GeoOrientationUpdate, distanceInMeters: Double)
. Use MapCamera.lookAt(point: GeoCoordinates, zoom: MapMeasure)
and MapCamera.lookAt(point: GeoCoordinates, orientation: GeoOrientationUpdate, zoom: MapMeasure)
instead.
Resolved Issues
- Navigation: A slash appearing on direction information (street name, road number, or signpost direction) is interpreted as
trên
in Vietnamese voice package. - Navigation: Fixed a crash that occurred when the
DynamicRoutingEngine
was not able to compute a better route. - Navigation: Fixed an issue with
trailerCount
in TruckRestrictionWarning
, if one is available. - When
MapFeatures.vehicleRestrictions
is activated, the map view will no longer show an icon for truck speed limits - also the related purple line is no longer shown. - Navigation: The current location can now be restored in order to fix issues with sending notifications.
- Outlines for
MapPolyline
lines no longer show a minimal gap at certain zoom levels. -
RoutingEngine
: Fixed a RoutingError
that happens for the Slovenian language definition when calling importRoute()
. -
RealisticViewWarning
: A PASSED
notification is no longer sent if an AHEAD
notification was not sent beforehand. - Natural guidance: Signpost direction information included in a voice maneuver notification is now obtained from the
localizedText
attribute in Signpost
instead of the deprecated towards
field in RoadTexts
.
Known Issues
- The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - When setting the
optimizedClientMapJapan
map catalog, then the optimizedClientMap
catalog has to be set (or loaded) first - or unexpected behavior and visual defects may occur. - Navigation: For
realisticView.signpostSvgImageContent
there can be issues with font overflows (ie. the text of a signpost shield might appear too big). - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Navigation: The visual representation of the lanes to take at a complex junction is not highlighted as expected for
realisticView.junctionViewSvgImageContent
: The lanes to take are shown correctly, but they are shown in green color instead of blue. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.13.5.0
New Features
- Routing: Added
Span.countryCode
property to obtain a country code per span. - Added
LocationIndicator.opacity
property to set and get the opacity of a location indicator. - Enhanced information on route restrictions: Added
violatedRestrictions: [ViolatedRestriction]
property to class SectionNotice
. ViolatedRestriction.Details
contains, for example, height restrictions or forbidden TruckType
values. This feature works online, but is also supported for use with the OfflineRoutingEngine
- if supported by your HERE SDK edition. Note: This is a beta release of this feature. - Added
LogControl
to filter HERE SDK log messages. This allows to disable HERE SDK related console logs or to set a custom LogAppender
to receive only selected log messages from the HERE SDK. - Routing: Enhanced
RoadTexts
accessible from a Maneuver
. RoadTexts
contains now a list of LocalizedRoadNumbers
and a numbersWithDirection
field to contain road numbers with direction. The latter replaces the deprecated numbers
field. - Added
MapFeature.terrain
and MapFeatureModes.hillshading
as a beta feature to show shaded terrain on the map. Not supported for hybrid and satellite schemes. This feature is disabled by default. Added the string "terrain" that can be specified in the Plist for the "FeatureConfiguration" key to include terrain data when downloading a Region
. - This version of the HERE SDK is delivered with map version 73 and map version 67 for the extended Japan map.
- Navigation: Added new camera behavior class called
SpeedBasedCameraBehavior
to be used in the VisualNavigator
. It provides automatic camera zoom and tilt based on the user's current speed. Although it can be used on active guidance, it is best suited for tracking mode. It is possible to customize which zoom or tilt value should be used for any given speed range. Furthermore, a smooth animation is now performed when switching between camera behaviors or when starting turn-by-turn navigation. - Added read-only property
signpost
to get signpost information. SignpostLabel.direction
will replace RoadTexts.towards
for getting information about directions. - Routing: Added
turnAngleInDegrees
(-180 to 180) and roundaboutAngleInDegrees
(-360 to 360) to Maneuver
class to indicate information on the turn angle for all turn related actions. If not applicable for the maneuver, the value will be nil
. roundaboutAngleInDegrees
indicates the amount of the roundabout that needs to be traversed - it is positive in right-driving countries and negative in left-driving countries.
API Changes - Breaking
- The
RealisticView
object inside the RealisticViewWarning
event is now optional. When distanceType
is ahead
, the RealisticView
will contain the SVG images for junction view and signpost. When distanceType
is passed
, the RealisticView
object will be nil
.
API Changes - Deprecations
- The
numbers
field in RoadTexts
has been deprecated and will be removed with HERE SDK version 4.16.0. Use the newly introduced numbersWithDirection
field instead. - Deprecated
setLogAppender()
in SDKNativeEngine
. Use the newly introduced LogControl
API instead. Deprecated Debug
and Trace
log levels as such messages are not relevant.
Resolved Issues
- Navigation: Fixed an issue with voice maneuver notifications for Arabic. Selected diacritics have been added to enhance the pronunciation.
- Navigation: Fixed an issue with voice maneuver notifications for Malayalam. An unexpected phrase occurred in the middle of a maneuver sentence.
- Navigation: Fixed wrong side for road signs.
roadsign
notifications and natural guidance maneuver instructions texts have been updated to indicate only the signs relevant for the current side of the road. - Navigation: Fixed an issue with voice maneuver notifications for Slovak. An unexpected 'a potom' phrase occurred in the middle of a maneuver sentence.
- Routing: Fixed an issue with wrong roundabout maneuver actions after return to route.
-
ManeuverAction.enterHighwayFromLeft
and ManeuverAction.enterHighwayFromRight
are now properly generated when RouteOptions.enableEnterHighwayManeuverAction
is set. - Navigation: Fixed missing
TruckRestrictionWarning
events when the user starts navigation on a long segment and the restriction is in the next segment. - Fixed
RoutingError.couldNotMatchOrigin
and RoutingError.couldNotMatchDestination
from OfflineRoutingEngine
when waypoints cannot be matched to the road network to align with the behavior of the online RoutingEngine
.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Navigation: The visual representation of the lanes to take at a complex junction is not highlighted as expected for
realisticView.junctionViewSvgImageContent
. Instead, all lanes are currently highlighted. On top, there can be issues with font overflows (ie. the text of a signpost shield might appear too big). - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.13.4.0
New Features
- Added
MapMarker.visibilityRanges : [MapMeasureRange]
property. -
MapMarker3D
objects can now be picked from the map view: Added PickMapItemsResult.markers3d
read-only property that holds the list of picked MapMarker3D
instances. - Added zoom
visibilityRanges
property to MapPolyline
. - Added
SDKNativeEngine.proxySettings
property to get/set the ProxySettings
that will be used by the HERE SDK for all network requests. By setting a proxy server, you can specify, for example, the IP address and port number of your proxy. By default, no proxy is set. Note: This is a beta release of this feature. - This version of the HERE SDK is delivered with map data v71 for the main (ROW) map catalog and v67 for the extended Japan catalog.
- Added support for natural guidance:
ManeuverNotification
texts for TTS now include significant objects (such as traffic lights or stop signs) along a route to make maneuvers better understandable. Example: "At the next traffic light turn left onto Wall street". By default, this feature is disabled. To enable it, add at least one NaturalGuidanceType
such as trafficLight
to ManeuverNotificationOptions
via the list of includedNaturalGuidanceTypes
. - Added
offlineMode
to SDKOptions
to initialize the HERE SDK in offline mode. This complements the existing global offline switch via the shared instance of the SDKNativeEngine
to switch at runtime. - Added
ignoreCachedData
option to CatalogVersionHint.latest(ignoreCachedData)
, which allows to auto-update to the latest map version when the map data cache already contains data and no Regions
are installed. Use this hint when initializing the HERE SDK. See the Maps
section in our Developer's Guide
for more details. - Added
MapMarker3D.visibilityRanges : [MapMeasureRange]
property.
API Changes - Deprecations
- Deprecated
CatalogVersionHint.latest()
. Use CatalogVersionHint.latest(Boolean)
instead.
Resolved Issues
- Navigation: Warner options are now stored and set again after switching from/to tracking mode/routing mode.
- Added voice maneuver notification text for the very first maneuver.
- Navigation: For very long routes, the eat-up route progress visualization is sometimes not in sync with the
LocationIndicator
. -
MapView
: Fixed handling of MapFeatures
when an invalid MapFeatureModes
value has been set. Now features with an invalid mode are silently ignored. - Maneuver notifications (TTS): Changed "HWY" road number abbreviation to "highway".
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Navigation: The visual representation of the lanes to take at a complex junction is not highlighted as expected for
realisticView.junctionViewSvgImageContent
. Instead, all lanes are currently highlighted. On top, there can be issues with font overflows (ie. the text of a signpost shield might appear too big). - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.13.3.0
New Features
- Offline Maps: Added error codes
pendingUpdate
and parallelRequest
to cover failed updates and parallel requests cases. - Debug symbols are now included in the heresdk.xcframework for iOS: Look for the dSYM files that are added for each device architecture. For iOS apps that are deployed to App Store or via TestFlight you can find in Apple's Connect Portal the crash reports: Instead of downloading the crash report click on Open in Xcode and you should see the symbolicated stack trace using the dSYM files. This should also work with Firebase Crashlytics and related solutions. Keep in mind, that the heresdk.xcframework is a fat binary and that its file size is optimized by Xcode at deployment time. More details you can find in the Key Concepts guide.
- Added opacity factor which specifies the translucency of a
MapMarker3D
. The factor is applied to the alpha channel of the resulting texture of the marker: Added opacity
and renderInternalsEnabled
properties. The renderInternalsEnabled
flag indicates whether to render the internal geometry of a 3D map marker occluded by its front facing polygons. - Added property to control the visibility of a
MapPolygon
dependent on a given zoom range: Added MapPolygon.visibilityRanges: [MapMeasureRange]
property. - Added property to control the visibility of a
MapMarker3D
dependent on a given zoom range: Added MapMarker3D.visibilityRanges: [MapMeasureRange]
property. - Added designated constructor to
MapView
: MapView.init(frame: CGRect, withSdkEngine: SDKNativeEngine, withOptions: MapViewOptions?)
. - This version of the HERE SDK is shipped with map data version 69 (OCM).
API Changes - Breaking
- Bitcode optimization has been deprecated by Apple. Consequently, as of now the HERE SDK no longer supports bitcode optimization and apps can no longer be built with bitcode. For older projects it may be required to explicitely disable bitcode - especially, when you build your app for release and you see in the logs that
-embed-bitcode
is executed. In that case, add ENABLE_BITCODE = NO;
to your debug / release Xcode build settings.
Resolved Issues
- Polylines are now pickable independent of alpha color values:
MapViewBase.pickMapItems()
now can pick MapPolyline
items with fillColor.alpha = 0
. -
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are now visible on the map. This was a license issue which affected all Navigate and Explore Edition users. - Navigation: Fixed missing truck restrictions warnings when there were overlapping restrictions ahead.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Navigation: For very long routes, the eat-up route progress visualization is sometimes not in sync with the
LocationIndicator
. - Navigation: The visual representation of the lanes to take at a complex junction is not highlighted as expected for
realisticView.junctionViewSvgImageContent
. Instead, all lanes are currently highlighted. On top, there can be issues with font overflows (ie. the text of a signpost shield might appear too big). - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.13.2.0
New Features
- Route calculation: Added more error codes to
RoutingError
to provide more detailed failure reasons. - Added customization options for route eat-up (ie. route progress) and maneuver arrows: Added class
VisualNavigatorColors
and made it a property of VisualNavigator
, also added struct RouteProgressColors
. RouteProgressColors
contains ahead
, outlineAhead
as route colors and behind
, outlineBehind
as traveled route colors. VisualNavigatorColors
has a member maneuverArrowColor
. VisualNavigatorColors
has the following methods: visualNavigatorColor.setRouteProgressColors(sectionTransportMode: SectionTransportMode, routeProgressColors: RouteProgressColors)
allows to set RouteProgressColors
per SectionTransportMode
. VisualNavigatorColor.getRouteProgressColors(sectionTransportMode: SectionTransportMode)
returns RouteProgressColors
for a provided SectionTransportMode
. VisualNavigatorColors.dayColors()
returns the default day VisualNavigatorColors
colors. VisualNavigatorColors.nightColors()
returns the default night VisualNavigatorColors
colors. Take a look at the Navigation example app for a possible usage example. - The HERE watermark can now be freely positioned on the map view: Added
mapView.setWatermarkLocation(anchor: Anchor2D, offset: Point2D)
and added the read-only property watermarkSize
to MapView
class. - Added 'RouteProgress.spanIndex' which represents the span index within a route section.
- Applied several map style improvements (no API changes involved): Updated the road shield icon for Turkey & Jamaica. Adjusted the visibility of public transport POIs and subway and tram lines in Japan. Improved visibility of intersections and traffic lights in Japan. Added dedicated traffic incident marker for type 'lane-restriction'. Visualized land parcels in Victoria, Australia (applies only to Navigate Edition). Added map data attribute 'National Importance' for priority and visibility settings of POIs (applies only to Explore Edition). Note that these changes have been already applied for HERE SDK 4.13.1.0.
- Detailed map for Japan: Improved the visibility of labels by reducing duplicated labels for POIs and landuse labels.
- Added
hasShower
attribute in TruckAmenities
struct and changed showerCount
attribute to optional.
API Changes - Breaking
- Navigation: The beta APIs for
SignpostWarningDelegate
and JunctionViewWarningDelegate
have been replaced by a new unified RealisticViewWarningDelegate
to receive SVG string data for signpost shields and complex junction views in 3D. The RealisticViewWarning
event now always contains SVG data for both, signposts and junction views. The realisticView.signpostSvgImageContent
is meant to be overlayed on top of the realisticView.junctionViewSvgImageContent
. The signpost view looks like a shield that appears along a road. Take a look at the Navigation example app for a usage example of the new API. Note that the HERE SDK only delivers the SVG as string, so you need to use a 3rd party library to render the SVG content, such as SvgView. The data for junction views was optimized to occupy only around 2 MB, while the signpost data occupies only a few KB. However, it is still recommended to use the available feature-configurations to preload the data in advance, see our Optimization Guide. Note that lane highlighting (ie. which lane to take at the complex junction) is not yet implemented and that there can be issues with font overflows (ie. the text of a shield might appear too big). Keep in mind, that the SVG assets are meant to be shown fullscreen on a secondary display.
API Changes - Deprecations
- Deprecated
MapView.setWatermarkPlacement(_ placement: WatermarkPlacement, bottomMargin: Int32)
. Use the new APIs instead. - Deprecated
FERRY
from ManeuverAction
enum. It was never used.
Resolved Issues
- Fixed missing truck restriction warnings that may happen when a user deviates from the route and enters a restricted area.
-
ManeuverNotifications
: Some word inflections and phrases in the voice package for Arabic have been revised to enhance the pronunciation of the voice notification. - Map view:
pickMapItems()
now also picks MapPolygons
with fillColor.alpha = 0
. - The previously missing maneuver text for the
depart
maneuver action is now generated. -
MapView.pause()
and MapView.resume()
are now called internally, when an application switches between background and foreground and thus, they no longer need to be called in applicationWillResignActive(_ application:)
and applicationDidBecomeActive(_ application:)
, unless an application calls MapView.pause()
and MapView.resume()
on it's own, for example, when pausing inactive map views that are shown on different tabs, or when hiding an invisible map for a list of scrollable map views. In such cases, it is now recommended to call MapView.pause()
and MapView.resume()
in applicationDidEnterBackground(_ application:)
and applicationWillEnterForeground(_ application:)
instead of applicationWillResignActive(_ application:)
and applicationDidBecomeActive(_ application:)
. Look at the Get Started guide for more details. - When requesting toll cost for offline routing, then the axle count is used in a wrong way. Workaround for implementation testing, but not production safe: Double the axle count.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Navigation: For very long routes, the eat-up route progress visualization is sometimes not in sync with the
LocationIndicator
. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation: The visual representation of the lanes to take at a complex junction is not highlighted as expected for
realisticView.junctionViewSvgImageContent
. Instead, all lanes are currently highlighted. On top, there can be issues with font overflows (ie. the text of a signpost shield might appear too big). - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.13.1.0
New Features
- Added read-only property
isRendering
to VisualNavigator
. It indicates whether the VisualNavigator
is currently rendering or not. - Added
MapMarkerCluster.opacity
property to set and get the opacity of the cluster image. - Added optional
billingTag
field to SDKOptions
to track your HERE platform usage across the various HERE services your application may contact. For more information on the billing tag, see our cost management guide. The tag needs to follow the format as described in the guide or it will be ignored. The parameter defaults to nil
, which also means that the tag is ignored for all requests. Note: The billing tag is optional, but when set, it can help you to understand how often your app uses certain services, for example, the number of hits to our HERE backend routing services. For more details on tracking such details, please consult the cost management guide or get in touch with the HERE billing team. - Added
businessAndServicesEvChargingStation
enum value to PlaceCategory
to allow searching for EV charging stations via a CategoryQuery
. - Added new persistent map status
PersistentMapStatus.storageClosed
to indicate that the map storage is already closed due to disposal of the SDKNativeEngine
. Added a new persistent map repair error PersistentMapRepairError.operationAfterDispose
to indicate that the repair is invoked on a disposed SDKNativeEngine
.
API Changes - Breaking
- Removed deprecated
MapDownloader.fromEngine
. Use instead MapDownloader.fromEngineAsync
. - Removed deprecated
MapUpdater.fromEngine
. Use instead MapUpdater.fromEngineAsync
.
Resolved Issues
- Calling
sdkNativeEngine.dispose()
now always shuts down ongoing MapDownloader
requests. - Fixed a bug in
OfflineRoutingEngine
for toll cost calculation that could happen when the axle count was specified for trucks. - Fixed incorrect
TruckRestrictionWarning
distance ahead when the current location of the vehicle is close to the end of a route segment. - Fixed empty
maneuver.getText()
for leftRoundaboutExit[1..12]
and rightRoundaboutExit[1..12]
maneuver action. The maneuver text is now always generated.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - When requesting toll cost for offline routing, then the axle count is used in a wrong way. Workaround for implementation testing, but not production safe: Double the axle count.
- Navigation: For very long routes, the eat-up route progress visualization is sometimes not in sync with the
LocationIndicator
. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation:
Signpost
SVG Strings contain an additional padding so that the SVG can be blended on top of a JunctionView
asset. However, due to the padding it is currently not easily possible to show a trimmed Signpost
asset without padding. Furthermore, the size of JunctionView
assets is too large for mobile use - unless the data is preloaded as part of offline maps data. On top, other issues may appear when trying to render the SVG String as bitmap. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.13.0.0
New Features
-
LocationSimulator
: Added methods pause()
and resume()
to pause and resume sending notifications to location event subscribers. - Adding support for transparent
MapMarker
items: Added MapMarker.opacity
property to set and get opacity of the map markers. - Added methods
MapScene.addMapImageOverlay(_ MapImageOverlay)
and MapScene.removeMapImageOverlay(_ MapImageOverlay)
. - You can now overwrite the base speeds on a
Route
per segment. After route calculation, you can use the segment reference IDs to set new values per route span and then calculate a new route with the updated values: Added collection of MaxSpeedOnSegment
instances to all motor-vehicle based route calculation options (BusOptions
, CarOptions
, EVCarOptions
, EVTruckOptions
, ScooterOptions
, TaxiOptions
, and TruckOptions
) to set restrictions for segments which affects route calculation and the ETA. For the SegmentReference
parameter, beside the segmentId
, the travelDirection
can be optionally set, other values are ignored. Note that this feature is not available for offline use. - Added global offline switch to make the HERE SDK radio-silent. This offline mode prevents the HERE SDK from initiating any online connection.
sdkNativeEngine.isOfflineMode()
method added to enable/disable this functionality. Note that this setting is not persisted. This is a beta release of this feature. -
OfflineRoutingEngine
: Added RouteOptions.enableTolls
to enable toll cost calculation for offline routing. This is a beta release of this feature. - Added return type to
setManeuverNotificationTimingOption()
to indicate if the ManeuverNotificationTimingOptions
parameter contains an invalid value. - Add
segmentHint
and onRoadThreshold
properties to Waypoint
struct to improve waypoint matching. - This version of the HERE SDK is delivered with map data version 60.
- Added
MapViewBase.isValid
property to check the validity of the corresponding MapView
instance. This will return false
, when the instance is in an invalid state because it was, for example, destroyed. - Added class
MapImageOverlay
that allows to show icons on top of the map view that do not move, scale or tilt together with the map. You can use this to show, for example, informative icons on a map view or a map surface view for in-car use.
API Changes - Breaking
- Removed previously deprecated
sdk.routing.TruckOptions.tunnelCategory
. Please use sdk.routing.TruckOptions.linkTunnelCategory
instead. Removed previously deprecated sdk.routing.EVTruckOptions.tunnelCategory
. Please use sdk.routing.EVTruckOptions.linkTunnelCategory
instead. - Removed the previously deprecated
SectionProgress.trafficDelayInSeconds
. Use instead SectionProgress.trafficDelay
. - Removed deprecated
Location.timestamp_since_boot_in_milliseconds
. Use Location.timestamp_since_boot
instead. - Remove deprecated 'sdk.routing.Route.polyline'. Use 'sdk.routing.Route.geometry' instead. Remove deprecated 'sdk.routing.Section.polyline'. Use 'sdk.routing.Section.geometry' instead.
- Removed deprecated enum entries of
MapError
: duplicateLayer
, invalidDataSource
, invalidContent
, unknownLayer
, unknown
. - Removed the previously deprecated
FarePrice.validityPeriodInSeconds
. Use instead FarePrice.validityPeriod
. - Removed deprecated
AuthenticationData.expiry_time_in_seconds
. Use AuthenticationData.expiry_time
instead. - Removed previously deprecated
LocationSimulatorOptions.notificationIntervalInMilliseconds
. Use instead LocationSimulatorOptions.notificationInterval
. - Removed the previously deprecated
PostAction.durationInSeconds
. Use instead PostAction.duration
. - Removed the previously deprecated
SectionProgress.remainingDurationInSeconds
. Use instead SectionProgress.remainingDuration
. - Removed previously deprecated variable
TruckSpecifications.type
. Please use TruckSpecifications.truckType
instead. - Removed the previously deprecated
Section.trafficDelayInSeconds
. Use instead Section.trafficDelay
. - Removed the previously deprecated
Maneuver.durationInSeconds
. Use instead Maneuver.duration
. - Removed the previously deprecated
Span.durationInSeconds
. Use instead Span.duration
. - Removed Section.departureTime and Section.arrivalTime properties. Use
Section.departureLocationTime
and Section.arrivalLocationTime
instead. - Removed previously deprecated enum
sdk.routing.HazardousGood
. Please use sdk.transport.HazardousMaterial
instead. Removed previously deprecated variable sdk.routing.TruckOptions.hazardousGoods
. Please use sdk.routing.TruckOptions.hazardousMaterials
instead. Removed previously deprecated variable sdk.routing.EVTruckOptions.hazardousGoods
. Please use sdk.routing.EVTruckOptions.hazardousMaterials
instead. - Removed the previously deprecated
Route.durationInSeconds
. Use instead Route.duration
. - Removed deprecated
MapCameraObserver
protocol, MapCamera.addObserver(_ observer: MapCameraObserver)
and MapCamera.removeObserver(_ observer: MapCameraObserver)
methods. Use MapCamera.addDelegate(_ delegate: MapCameraDelegate)
and MapCamera.removeDelegate(_ delegate: MapCameraDelegate)
instead. - Removed previously deprecated
sdk.routing.TransportMode
enum. Use sdk.transport.TransportMode
enum instead. Removed previously deprecated variable Route.transportMode
. Use Route.requestedTransportMode
instead. Removed previously deprecated variable NavigatorInterface.trackingTransportMode
. Use NavigatorInterface.trackingTransportProfile
instead. - Removed deprecated
MapCamera.flyTo()
methods and related MapCamera.FlyToOptions
. Use one of the MapCameraAnimationFactory.flyTo()
methods to create a fly-to camera animation and MapCamera.startAnimation(MapCameraAnimation)
to initiate it. - Removed
MapCameraUpdateFactory.setPrincipalPointOffset(_ principalPointOffset: Point2D)
method. Use MapCameraUpdateFactory.normalizedPrincipalPoint
instead. - Removed previously deprecated
DynamicRoutingEngineOptions
default constructor and DynamicRoutingEngineOptions.pollIntervalInMinutes
and DynamicRoutingEngineOptions.minTimeDifferenceInSeconds. Please use the available alternatives insted. - Removed the previously deprecated
BatterySpecifications.chargingSetupDurationInSeconds
. Use instead BatterySpecifications.chargingDetupDuration
. - Removed the previously deprecated
Section.durationInSeconds
. Use instead Section.duration
. - Removed the previously deprecated
Route.trafficDelayInSeconds
. Use instead Route.trafficDelay
. - Removed the previously deprecated
GPXOptions
constructor with parameters. Use instead the default constructor and set the options by fields. - Removed the previously deprecated
SearchOptions
constructor. Use default constructor instead. - Removed deprecated methods
MapCameraLimits.setMinTilt
and MapCameraLimits.setMinTilt
, use MapCameraLimits.tiltRange
instead. Removed deprecated methods MapCameraLimits.setMinZoomLevel
and MapCameraLimits.setMaxZoomLevel
, use MapCameraLimits.zoomRange
instead. Removed enum 'MapCameraLimits.ErrorCode' and exception MapCameraLimitsException.MapCameraLimitsException
which have become obsolete. - Removed the previously deprecated
TransitStop.durationInSeconds
. Use instead TransitStop.duration
. - Removed the previously deprecated
ManeuverProgress.remainingDurationInSeconds
. Use instead ManeuverProgress.remainingDuration
. - Removed deprecated
MapCamera.cancelAnimation()
method. Use MapCamera.cancelAnimations()
instead. - Removed the previously deprecated
Waypoint.durationInSeconds
. Use instead Waypoint.duration
. - Removed deprecated and unsupported method
RasterDataSource.changeConfiguration(_ configFile: String)
. - Removed the previously deprecated constructor of
CameraSettings
. Use instead the default constructor or CameraBehaviour
. - Removed the previously deprecated
PreAction.durationInSeconds
. Use instead PreAction.duration
.
API Changes - Deprecations
- Deprecated
VenueMap.venues
. Only the last two open venues remain in memory, others are dropped. Therefore, no replacement is offered. - Deprecated
VenueService.startLoading()
. No replacemenet is offered. - Deprecated methods to manipulate the focal length of the 'MapCamera'. Methods 'setFocalLength()' of class 'MapCameraUpdateFactory' and 'focalLength()' of class 'MapCameraKeyframeTrack'. Modify the field of view to achieve a similar visual change.
Resolved Issues
- Unified maneuver list:
Maneuver
objects that are retrieved from Navigator
or VisualNavigator
are now identical to the ones retrieved from Route.Section
. On top, the maneuver.text
property is now guaranteed to be non-empty. The property is now also non-empty when using the OfflineRoutingEngine
. The content of the text
property has been aligned and, for example, the text no longer contains distance information. - When all types of gesture actions are disabled using the
Gestures.disableDefaultAction(GestureType)
method the start of a gesture will no longer cancel ongoing camera animations. - Disposing the
SDKNativeEngine
may not shut down ongoing MapDownloader
requests.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - The global offline switch
sdkNativeEngine.isOfflineMode()
does not load map tiles after enabling the online mode again or after restoring a lost network connection. As a workaround the map view has to be panned & zoomed a bit to activate the online mode again. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - When requesting toll cost for offline routing, then the axle count is used in a wrong way. Workaround for implementation testing, but not production safe: Double the axle count.
- Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation:
Signpost
SVG Strings contain an additional padding so that the SVG can be blended on top of a JunctionView
asset. However, due to the padding it is currently not easily possible to show a trimmed Signpost
asset without padding. Furthermore, the size of JunctionView
assets is too large for mobile use - unless the data is preloaded as part of offline maps data. On top, other issues may appear when trying to render the SVG String as bitmap. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.11.0
New Features
-
GPXTrack
: Added gpxTrack.getLocations()
to get all stored track points converted to a Location
object. -
LocationIndicator
: Added visual halo support to indicate the accuracy of the GPS signal. The default 3D assets have been updated. By default, the halo is not visualized. In this case the accuracy indicator has a fixed and zoom level independent size. For values smaller than 20 meters the halo is hidden. Enable the halo by setting the boolean property LocationIndicator.isAccuracyVisualized
. If enabled, location.horizontalAccuracyInMeters
defines the size of the halo around the location indicator - after calling locationIndicator.updateLocation(location)
. - Exposed detailed information along a
Route
to know upcoming speed limits, street attributes, names, traffic and much more. For this, added Span.sectionPolylineOffset
, Span.dynamicSpeedInfo
, Span.streetAttributes
, Span.carAttributes
, Span.truckAttributes
, Span.scooterAttributes
, Span.walkAttributes
, Span.durationInSeconds
, Span.streetNames
, Span.routeNumbers
, Span.speedLimitInMetersPerSecond
, Span.consumptionInKilowattHours
, Span.functionalRoadClass
, Span.duration
, Span.baseDuration
. A span defines the smallest part of a route segment and its curvature is exposed as a list of GeoCoordinates
. - This version of the HERE SDK is delivered with map data version 59.
-
MapUpdater
: It is now possible to define if Region
updates including subregions are applied one-by-one (MapUpdateVersionCommitPolicy.onFirstRegion
) or once the updates for all installed regions have been downloaded completely (MapUpdateVersionCommitPolicy.onComplete
). This influences the required size of the storage during an update. By default, MapUpdateVersionCommitPolicy.onComplete
is used. Set the policy via the new property mapUpdater.versionCommitPolicy
. - Added a way to filter the content shown for the
MapFeatures.trafficIncidents
layer on the map view: Added MapContentSettings.filterTrafficIncidents(trafficIncidents: [TrafficIncidentType])
method to filter the displayed traffic incidents and MapContentSettings.resetTrafficIncidentFilter()
method to reset the applied traffic incident filter.
API Changes - Deprecations
- Positioning: Deprecated 'LocationEngineStatus.notLicensed' and 'LocationEngineStatus.notCompatible' since the HD GNSS feature is not available for iOS.
Resolved Issues
- Camera settings are now applied immediately after changing 'visualNavigator.cameraMode', 'fixedCameraBehavior.cameraDistanceInMeters', 'fixedCameraBehavior.cameraTiltInDegrees' or 'fixedCameraBehavior.cameraBearingInDegrees'.
- Navigation: For very long routes, the eat-up route progress visualization is sometimes not in sync with the
LocationIndicator
.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - Disposing the
SDKNativeEngine
may not shut down ongoing MapDownloader
requests. As a workaround, shut down pending requests yourself before disposing the HERE SDK. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation:
Signpost
SVG Strings contain an additional padding so that the SVG can be blended on top of a JunctionView
asset. However, due to the padding it is currently not easily possible to show a trimmed Signpost
asset without padding. Furthermore, the size of JunctionView
assets is too large for mobile use - unless the data is preloaded as part of offline maps data. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.10.0
New Features
-
RoutePrefetcher
: Added prefetchCorridorLengthMeters
property to optionally configure the length of a corridor to prefetch. - Navigation: Added
intersectionNames
property to Maneuver
class to provide LocalizedTexts
of a junction. These attributes are only provided when a maneuver is retrieved from Navigator
or VisualNavigator
during turn-by-turn navigation. Routes calculated with OfflineRoutingEngine
are not supported. - This version of the HERE SDK is delivered with map data version 57.
- Navigation: Route eat-up functionality is now enabled, by default: Added route progress visualization in
VisualNavigator
controlled by routeProgressVisible
property. When enabled, the travelled part of the polyline and its outline will be rendered with gray colors. - GPX: Added
addTrack()
method to GPXDocument
to allow multiple tracks storage. - Navigation: Added support for signposts and junction view images in SVG Standard 1.1 format. Use
visualNavigator.signpostWarningDelegate
and visualNavigator.junctionViewWarningDelegate
to receive SVG assets as a String at complex junctions. Use SignpostWarningOptions
and JunctionViewWarningOptions
to specify, for example, the desired aspect ratio. Currently, signposts contain a padding, so that the asset can be optionally matched as overlay on a corresponding junction view asset. While signposts images are usually around 30 KB, junction views can occupy around 15 MB. Note that if the data was not loaded in time, the String will be empty. Therefore, it is recommended to preload the assets via feature configurations: Use "JUNCTIONVIEW_3X4", "JUNCTION_VIEW_16X9" to preload junction views and "JUNCTION_SIGN_3X4", "JUNCTION_SIGN_16X9" for signposts. To preload the data, the feature configuration has to bet set and then a Region
has to be downloaded and installed. When driving in such a region, the assets are available for online _and offline use. For future releases, we will reduce the level of realism to shrink the size of junction views. Currently, a lot of separate details like trees are used to compose a 3D image. By default, there is no native support for Strings in SVG Standard 1.1 format, so a 3rd party solution has to be used to render the SVGs. Note that this is a beta release of this feature and thus, there can be bugs and unexpected behavior and the feature is likely to change for upcoming releases without a deprecation process.
Resolved Issues
- Navigation: Fixed missing
ahead
event for TruckRestrictionWarning
when the restriction does not start at the beginning of a segment. - Navigation: Fixed missing
passed
event for TruckRestrictionWarning
when consecutive, but not adjacent, segments contain the same truck restriction.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start when an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - Disposing the
SDKNativeEngine
may not shut down ongoing MapDownloader
requests. As a workaround, shut down pending requests yourself before disposing the HERE SDK. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation:
Signpost
SVG Strings contain an additional padding so that the SVG can be blended on top of a JunctionView
asset. However, due to the padding it is currently not easily possible to show a trimmed Signpost
asset without padding. Furthermore, the size of JunctionView
assets is too large for mobile use - unless the data is preloaded as part of offline maps data. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Navigation: For very long routes, the eat-up route progress visualization is sometimes not in sync with the
LocationIndicator
. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.9.0
New Features
- Added bulk operation support for
MapPolylines
: Multiple lines can now be added / removed with addMapPolylines(_ mapPolylines: [MapPolyline])
and removeMapPolylines(_ mapPolylines: [MapPolyline])
. - When using custom catalogs, then the new property 'CatalogConfiguration.cacheExpirationPeriod' allows to define for how long the catalog data is retained in the map cache before it is removed. If not set, the cache will be deleted on a Least Recently Used (LRU) basis.
- Navigation: Added spatial audio trajectories to handle notification maneuvers that are happening shortly after each other. These trajectories are not affected by 'initialAzimuthInDegrees' or 'sweepAzimuthInDegrees' when calling 'startPanning()': Instead, a special case of panning trajectory will be triggered to better support such cases: For this, the audio cue is spatialized considering the action of both maneuvers - for example, the audio cue 'Now turn right and then turn left' will be spatialized as following: (1) 'Now turn right' will be heard as coming from the right. (2) 'and then turn left' will be heard as coming from the left. Note that the estimation for playing both audio cues may not be always fully accurate resulting in a slight mismatch between the audio source and the audio cue message.
-
SDKOptions.customEngineBaseUrls
: Added support for configurable URLs with the new enum value EngineBaseURL.authentication
that can be used to specify custom URLs for authentication instead of the default URLs. Example URL (do not add endpoints): "https://account.api.yourcompany.com". - Added the following feature configurations: "RENDERING": A basic set of rendering features such as carto POIs. "TRAFFIC": Map data that provides traffic broadcast functionality using RDS-TMC format. It should be used when there is no internet connection, so that the routing module can utilize traffic data coming over the radio channel to create routes with the
OfflineRoutingEngine
. "EV": Offline map data for EV charging stations. "TRUCKSERVICE_ATTRIBUTES": Enables truck related attributes to be returned by OfflineSearchEngine
. "FUEL_STATION_ATTRIBUTES": Enables fuel attributes to be returned by OfflineSearchEngine
. "OFFLINE_BUS_ROUTING": Map data that is used to calculate bus routes. When not set, the OfflineRoutingEngine
may not be able to calculate routes with BusOptions
. Note that the "RENDERING" layer is a base layer that cannot be disabled. See _optimization guide for more details. -
MapFeatures.vehicleRestrictions
: The shown icons can now be picked from the map to get more details. Pick them from the map view with pickMapContent()
. pickMapContentResult.vehicleRestrictions
provides PickMapContentResult.VehicleRestrictionResult
. See CartoPOIPicking example app for a possible usage scenario. Note that this is a beta release of this feature. - Added
VehicleProfile
class to define the properties of a vehicle. In the future, this profile is planned to be used for routing. Right now, the profile is only relevant for users of the Navigate Edition. -
SDKOptions.customEngineBaseUrls
: Added support for configurable endpoints with the new enum value EngineBaseURL.DS_PROXY
that can be used to specify custom endpoints to set a DS Proxy instead of the default endpoints. Example URL (with added endpoints): "https://data.api.platform.yourcompany.com/direct/v1/test". -
MapMarker
clusters: The beta status for MapMarkerCluster.ImageStyle
, MapMarkerCluster.CounterStyle
and the related MapMarkerCluster
constructor has been removed: The feature has become stable. - Added new feature configurations to specify the default layer configuration. Added "JUNCTION_VIEW_3X4", "JUNCTION_VIEW_16X9", "JUNCTION_SIGN_3X4", "JUNCTION_SIGN_3X5", "JUNCTION_SIGN_4X3", "JUNCTION_SIGN_5X3", "JUNCTION_SIGN_16X9". These layers are disabled, by default. They contain data for the upcoming feature to support SVG image data for junction views and signpost views during navigation. Note that the image ratio is appended to the layer name. See optimization guide for more details.
API Changes - Breaking
-
MapPolyline
: Removed the beta feature AlphaBlendType
enum and the related property. - The default language in
ManeuverNotificationOptions
was changed from British to American English.
API Changes - Deprecations
- Navigation: Deprecated
Navigator.assumedTrackingTransportMode
. Use instead the newly introduced Navigator.trackingTransportProfile
to set the newly introduced VehicleProfile
for tracking mode. With this, speed limits will match the provided profile and effectively, truck speed limits can now be received as expected. -
MapUpdater
: Deprecated performMapUpdate()
and checkMapUpdate()
. Use the newly introduced updateCatalog()
and retrieveCatalogsUpdateInfo()
instead. Both methods are released as beta. Internally, each downloadable Region
is part of a catalog and regions cannot be updated individually, instead only the catalog or the cache can be updated as a whole. -
MapCamera
: When setting GeoCoordinates
for any camera operation such as lookAt()
or flyTo()
, then the altitude
value will be ignored starting with release of HERE SDK 4.15.0 - for now, the value has been deprecated.
Resolved Issues
- Navigation: Fixed high CPU/battery consumption when
VisualNavigator
is used. - Navigation: In tracking mode, without following a
route
, the TransportMode
is no longer ignored. Call the newly introduced navigator.trackingTransportProfile
and set a VehicleProfile
with e.g. TRUCK
transport mode. By default, CAR
is assumed.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start when an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - Disposing the
SDKNativeEngine
may not shut down ongoing MapDownloader
requests. As a workaround, shut down pending requests yourself before disposing the HERE SDK. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.8.0
New Features
- Indoor Maps: Overloaded
venueEngine.start(token:String)
to accept a custom authentication token to start the VenueEngine
for customers who can generate a project scope token. - Added
MapLoaderError.catalogConfigurationError
: This error may occur when a CatalogConfiguration
is misconfigured and cannot be used for any operation with MapDownloader
or MapUpdater
. -
VisualNavigator
: By default, the route polyline is now rendered with colored sections to highlight different transport modes (if any) - as listed in SectionTransportMode
. - Added animation support for
MapPolyline
instances. Now, they can be moved and the progress can be animated (for example, to animate a route-eat-up progress) - added MapPolylineAnimation
class to represent an animation that can be applied to a MapPolyline
object. Added static startAnimation(_ animation: MapPolylineAnimation, animationDelegate listener: AnimationDelegate)
to MapPolyline
to start an animation. Added cancelAnimation(_ animation: MapPolylineAnimation)
to MapPolyline
to cancel an animation. Added polylineProgress(keyframes: [ScalarKeyframe], easingFunction: EasingFunction, interpolationMode: KeyframeInterpolationMode) -> MapItemKeyFrameTrack
to create a keyframe track for the progress property of a 'MapPolyline'. -
TruckRestrictionWarning
: Added DistanceType.reached
to notify when a truck restriction has been reached. The event is followed by passed
, when the restriction has been passed. If the restriction has no length, then reached
is skipped and only a passed
event is sent. Note that the ahead
event is always sent first. Added now also support for WeightRestrictionType.weightPerAxle
. If no restriction is set, then a general truck restriction applies: Added TruckRestrictionWarningType.general
, for convenience. The Navigation example app and the developer's guide show a possible implementation. Note that the above features are released as beta.
API Changes - Breaking
- The minimum supported Xcode version was raised from Xcode 12.4 to Xcode 13.2.1. The minimum supported Mac OS version was raised from Catalina to Big Sur. Lower versions may still work, but are no longer guaranteed to work. Note that the minimum supported iOS version stays on 12.4. Effectively, this change was already introduced with HERE SDK 4.12.7.0.
-
TruckRestrictionWarning
: Changed the distance threshold when the AHEAD
notification is sent. In cities, the event is sent 500 m ahead (instead of 1000 m ahead). On rural roads, the event is sent 750 m ahead (instead of 1500 m ahead). And on highways, the event is sent 1500 m ahead (instead of 2000 m ahead).
Resolved Issues
-
TruckRestrictionWarning
: Warnings that are not on a Route
path are now filtered out. Note that if a a driver deviates from a route, the warnings are still delivered. -
OfflineRoutingEngine
: Fixed missing SectionNotice
items for routes that have been calculated with returnToRoute()
. -
OfflineRoutingEngine
: The sequence of roundabout-related ManeuverAction
instructions is now behaving like the (online) RoutingEngine
- the sequence is now left/rightRoundAboutEnter
followed by left/rightRoundAboutEnterExit[1-12]
.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start when an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - Disposing the
SDKNativeEngine
may not shut down ongoing MapDownloader
requests. As a workaround, shut down pending requests yourself before disposing the HERE SDK. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation: In tracking mode, without following a
route
, the TransportMode
is ignored and falls back to car
. Setting navigator.assumedTransportMode
has no effect. And, for example, when receiving SpeedLimit
events, they are only valid for cars. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.7.0
New Features
-
SearchEngine
: Added connectorTypeId
to EVChargingStation
. More information on the IDs and the corresponding type can be found here. - Added
MapView.secondaryLanguage
property to set and get a secondary map language to support places that can show dual labels. If the text for primary and secondary language is the same, then only the primary language will be shown. If a requested language is not supported, then the local language is used. For example, some cities in India show a dual label with Latin (English) & Hindi text - at the same time. - Added support for custom map data: Added
CatalogConfiguration
, which can be used to access default catalogs on the HERE platform, as well as custom catalogs such as for self-hosted or BYOD (bring your own data) use cases. Added DesiredCatalog
, which provides an interface to identify a catalog on the HERE platform. A developer can specify the HERE Resource Name (HRN) for the catalog along with a CatalogVersionHint
for the desired version. A custom CatalogConfiguration
needs to be specified via SDKOptions
before initializing the HERE SDK. Note: This is a beta release of this feature, so there could be a few bugs and unexpected behaviors. Related APIs may change for new releases without a deprecation process. - Added
MapPolyline.progressOutlineColor
property to style the outline of the progress part of a polyline. - This version of the HERE SDK is delivered with map data version 54.
- Added support for auto-zoom during guidance: Added the new classes
CameraBehavior
, FixedCameraBehavior
and DynamicCameraBehavior
, and the new property VisualNavigator.cameraBehavior
. Set VisualNavigator.cameraBehavior
an instance of DynamicCameraBehavior
to enable dynamic camera behavior (i.e. zooming in and out from maneuvers) duration navigation. Set VisualNavigator.cameraBehavior
an instance of FixedCameraBehavior
to track the location marker from a fixed distance, tilt and, optionally, bearing. Set VisualNavigator.cameraBehavior
to null
do disable any camera behavior. Furthermore, use CameraBehavior.normalizedPrincipalPoint
to change the principal point used duration navigation. The default normalized principal point used by the VisualNavigator
can be retrieved from an defaulted constructed instance of FixedCameraBehavior
. - TTS: Side of destination information is now supported for voice
ManeuverNotification
events. - Indoor Maps: Added
venueinfoList
which returns a list of venues. The list is accessible from a VenueMap
and it contains VenueInfo
elements containing a venue identifier, a venue ID and a venue name.
API Changes - Breaking
-
VisualNavigator
now uses the same colors as the HERE WeGo app for routes. Also, the bicycle route color has been aligned.
API Changes - Deprecations
- Deprecated
CameraMode
, CameraSettings
, VisualNavigator.cameraMode
and VisualNavigator.cameraSettings
. They will be removed in version 4.15.0. Use CameraBehavior
and VisualNavigator.cameraBehavior
instead.
Resolved Issues
- When using Xcode 13 or higher you no longer get a warning that certain files in
heresdk.swiftmodule
are either malformed or generated by a different Swift version. The HERE SDK is now compiled with Xcode 13.2.1. -
MapPolyline
instances no longer interprete an alpha color setting of 0.0 as fully opaque. - Navigation: Fixed missing
passed
notification when ahead
notification is sent in tracking mode and then a route set to the navigator. - Improved the
VisualNavigator
to not redraw on the map view when the provided Location
update is not changing.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start when an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - Disposing the
SDKNativeEngine
may not shut down ongoing MapDownloader
requests. As a workaround, shut down pending requests yourself before disposing the HERE SDK. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation: In tracking mode, without following a
route
, the TransportMode
is ignored and falls back to car
. Setting navigator.assumedTransportMode
has no effect. And, for example, when receiving SpeedLimit
events, they are only valid for cars. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.6.0
New Features
- Navigation: Added maneuver instructions for Catalan.
- Added
AlphaBlendType
enum and the property MapPolyline.alphaBlendType: AlphaBlendType
. The AlphaBlendType
specifies how translucent MapPolyline
instances are rendered on top of each other. The default type is OVERWRITE
. Note that this is a beta release of this feature. - Search: Added
CategoryQuery.fuelTypes
and TextQuery.fuelTypes
, which can be used to filter FuelStation
results based on available fuel types. Added also TextQuery.truckFuelTypes
and CategoryQuery.truckFuelTypes
, which can be used to filter FuelStation
results based on available truck fuel types. - Added
MapPolyline.progress
and MapPolyline.progressColor
properties to style two parts of a polyline with different colors. - Added
CategoryQuery.truckClass
and TextQuery.truckClass
, which can be used to filter FuelStation
results with the minimum supported TruckClass
. This filter is only available for use with the SearchEngine
. The OfflineSearchEngine
(not available for all editions) ignores this filter. - Expose new feature
OFFLINE_BUS_ROUTING
in the LayerConfiguration
that adds support to OfflineRountingEngine
to calculate routes with BusOptions
. Attention: Without this feature, bus routes cannot be calculated offline. - Indoor Maps: Setting a HRN value has been made optional. If a HRN is not provided, then the default collection will be selected automatically. The default collection implies the collection which has all published indoor venue maps for a realm. Note that a user can still change a HRN via
VenueService.setHrn(hrn:)
. - Added
RoutePlace.sideOfDestination
to identify the side of a street where the destination waypoint resides. - Map style update: Optimized the map view representation for
MapScheme.hybridDay
and MapScheme.hybridNight
: The day and night schemes have been unified and the readability has been improved.
API Changes - Deprecations
- Deprecated
MapFeatureModes.trafficFlowRegionSpecific
, it will be removed in version 4.15.0. Use the newly introduced MapFeatureModes.trafficFlowJapanWithoutFreeFlow
instead, if you are using the rich map for Japan. This is the adapted mode for Japan based on trafficFlowWithoutFreeFlow
to exclude green lines for no traffic. - Deprecated
SDKInitializer
and related functionality, it will be removed with HERE SDK 4.15.0. Use SDKNativeEngine.makeSharedInstance()
instead.
Resolved Issues
- Navigation: Fixed a crash that may occur when receiving
SpeedLimit
events. -
RoutingEngine
: The importRoute()
feature via a list of Locations
can be used now as expected. - Offline Maps:
MapDownloader
now accurately reflects the size of Region
downloads based on the current "feature_configuration". - When using the
RoadSignWarningListener
, then setting or getting RoadSignWarningOptions
is now functional. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. Such devices lack GPS sensors. To prevent installing an app, set the UIRequiredDeviceCapabilities
as described in the developer's guide. -
MapPolyline
instances no longer ignore alpha color settings. - Navigation: If the voice package language is set to
ja-JP
, the voice notification will include direction information (street name, route name, signpost information) in Hiragana form to avoid wrong interpretation of Kanji characters by the internal TTS engine. - Navigation: Improved TTS maneuver notifications for Italian and Spanish.
Known Issues
- Sometimes, a crash may happen for turn-by-turn navigation, when a segment with a ferry set as
TransportMode
is ahead. - Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
and MapScene.Layers.trafficIncidents
are no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start when an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - Disposing the
SDKNativeEngine
may not shut down ongoing MapDownloader
requests. As a workaround, shut down pending requests yourself before disposing the HERE SDK. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. -
MapPolyline
instances interprete an alpha color setting of 0.0 as fully opaque. As a workaround, set an alpha value of 0.01 to make the polyline translucent. Non-zero alpha values work as expected. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
- Navigation: In tracking mode, without following a
route
, the TransportMode
is ignored and falls back to car
. Setting navigator.assumedTransportMode
has no effect. And, for example, when receiving SpeedLimit
events, they are only valid for cars. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.5.0
New Features
- Added
MapFeatures.environmentalZones
and MapFeatureModes.environmentalZonesAll
. - Added
MapFeatures.congestionZones
and MapFeatureModes.congestionZonesAll
. - All map view features now have a named default mode. Constants for those were added to
MapFeatureModes
: buildingFootprintsAll
, extrudedBuildingsAll
, environmentalZonesAll
, trafficIncidentsAll
, safetyCamerasAll
(only available for the Navigate Edition). - Added a
CameraSettings
property to control the principal point position during visual navigation. -
SearchEngine
: Added the property Details.fuelStation
that contains fuel station attributes. Added struct FuelStation
,FuelAdditive
, GenericFuel
, TruckFuel
. Currently it is supported only for online search. It can be enabled by adding show=fuel
as custom option. This is a beta feature and thus subject to change. - Optimized the map view representation for extruded buildings and building footprints across zoom levels.
API Changes - Deprecations
- Indoor Maps: Deprecated all functions in
venues
which used a feature ID as integer. It is recommended to use functions which accept a feature ID as string. For example, instead of getID()
, use getIdentifier()
and instead of getGeometryById(geometryId: Int32)
, use getGeometryById(geometryId: String)
.
Resolved Issues
- Lane assistance is now supported also for the
bus
transport mode.
Known Issues
- Sometimes, a crash may happen for turn-by-turn navigation, when a segment with a ferry set as
TransportMode
is ahead. - Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. - When using the
RoadSignWarningListener
, then setting or getting RoadSignWarningOptions
is non-functional for now. Setting these options has no effect. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start until an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
-
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Navigation: In tracking mode, without following a
route
, the TransportMode
is ignored and falls back to car
. Setting navigator.assumedTransportMode
has no effect. And, for example, when receiving SpeedLimit
events, they are only valid for cars. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The importRoute()
feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.4.0
New Features
- Indoor maps: Added overloaded versions for
selectVenueAsync(venueId: Int32, completion: @escaping heresdk.VenueLoadErrorHandler)
and addVenueAsync(venueId: Int32, completion: @escaping heresdk.VenueLoadErrorHandler)
to propagate errors occuring during loading of venues. Errors occuring during venue load can be captured with the completion handler. Please refer to the example app for a usage example. - Indoor maps: Added
getIdentifier()
for Structure
, Level
, Geometry
and Entity
which returns the ID for these features as a string. Also added related overloaded functions like getGeometryById(geometryId: String)
. - Navigation: Along a road you can find many shields. Now you can get notified on all these shields while driving: Added a warner for road signs on the route with
RoadSignWarningListener
. The resulting RoadSignWarning
event contains detailed information on the shield, including RoadSignType
and RoadSignCategory
. By default, the event will be fired with the same distance threshold as for other warners: On highways, the event is fired 2000 meters ahead, on rural roads 1500 meters ahead and in cities 1000 meters ahead. With RoadSignWarningOptions
you can set a filter. Note that for now, setting RoadSignWarningOptions
has no effect due to a known issue - see below. - Added
enterHighwayFromLeft
and enterHighwayFromRight
values to ManeuverAction
enum. They indicate the maneuver action for a driver to perfom on entering a highway either from the left or right side. These enum values are only generated when setting the enableEnterHighwayManeuverAction
flag in RouteOptions
to true. By default, the flag is set to false. With HERE SDK 4.14.0 we plan to set it to true, by default. - Added
AreaType
enum which represents the type of an area such as country, state or district. Added property Place.areaType
which gets the area type for the respective Place
. - Navigation: It is now possible to unsubscribe from continuously prefetching map data by calling
routePrefetcher.stopPrefetchAroundRoute()
. - Added
EVChargingStation.hasFixedCable
field to know if a charging station for electric vehicles supports fixed cables.
API Changes - Breaking
- Traffic broadcasts: Adjusted primitive data types for
TMCServiceRequest
, TMCServiceProviderInfo
, TMCPreferredSidsRequest
, RDSEncryptionKeysRequest
, RDSEncryptionKey
, TMCServiceProviderInfo
, TMCData
and TMCServiceInterface
.
Resolved Issues
- Increased size limit from 10000 to 50000 for
routingEngine.importRoute()
when setting a list of Location
points. -
RoutingEngine
: Improved the time to calculate Route
results for very large routes. -
MapDownloader
: It is now possible to delete a Region
when another download was interrupted. - Fixed high number of mountain peak labels on the map of USA to improve the performance and map readability. For this, the
MapUpdater
needs to be used to update to map version 48 or higher. - The sequence of roundabout-related
ManeuverAction
values is now left/rightRoundaboutEnter
followed by left/rightRoundaboutEnterExit[1-12]
. It was previously left/rightRoundaboutEnterExit[1-12]
followed by left/rightTurn
. -
RoutingEngine
: Fixed missing toll information for bus or taxi online routes.
Known Issues
- Sometimes, a crash may happen for turn-by-turn navigation, when a segment with a ferry set as
TransportMode
is ahead. - Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. - When using the
RoadSignWarningListener
, then setting or getting RoadSignWarningOptions
is non-functional for now. Setting these options has no effect. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start until an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
-
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Navigation: In tracking mode, without following a
route
, the TransportMode
is ignored and falls back to car
. Setting navigator.assumedTransportMode
has no effect. And, for example, when receiving SpeedLimit
events, they are only valid for cars. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The importRoute()
feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.3.0
New Features
- Introduced a new
MapMarkerCluster.CounterStyle
that indicates the number of contained MapMarker
items in a cluster. The style allows various options to customize how this will be rendered on top of a cluster image. A new MapMarkerCluster()
constructer has been added to set the style. In addition, an Anchor2D
can be used to position the counter and the cluster image. An usage example can be found in the MapItems
example app. Note that this is a beta release of this feature. -
OfflineSearchEngine
: The newly introduced TruckAmenities
feature is enabled by default for all offline search requests. This is a beta release of this feature. - Added
CategoryQuery.includeChains
and CategoryQuery.excludeChains
that support search filtering by chains. - Labels for indoor maps can now be modified with
venueService.setLabelTextPreference()
that defines what content is shown for text labels on an indoor map. - The properties for
EVChargingPoolDetails
and EVChargingStation
have been extended. Such information is available when using the online SearchEngine
and the OfflineSearchEngine
(for users of the Navigate Edition). -
SearchEngine
: Added TruckAmenities
to the Details
of a Place
to inform on amenities such as truck wash or the number of available showers. Currently, this is supported only for online search. For now, this can be enabled by calling searchEngine.setCustomOption()
with "show" as name
and "truck" as value
. This is a beta release of this feature. - This version of the HERE SDK is delivered with map data version 49.
- Traffic broadcast: Added
TMCServiceInterface.onTMCEntered()
to resolve blocking calls when TrafficBroadcast.onTMCDataUpdated()
is called.
API Changes - Breaking
- Search for EV charging stations: Moved and renamed
Place.Details.EVChargingStationAttributes
to Place.Details.EVChargingPool.EVChargingPoolDetails
. -
MapFeatureModes.trafficFlowRegionSpecific
is only rendered for credentials that enable detailed map data for Japan. By default, use MapFeatureModes.trafficFlowWithFreeFlow
instead. - Removed the previously deprecated
MilestoneReachedDelegate
. Use instead the MilestoneStatusDelegate
.
API Changes - Deprecations
- Deprecated
TextQuery.includeChains
and TextQuery.excludeChains
. Please use CategoryQuery.includeChains
and CategoryQuery.excludeChains
instead.
Resolved Issues
- Fixed an issue with
MapView
gestures inside a UIScrollView
: The issue occurred when a MapView
is placed inside a UIScrollView
(directly or indirectly) which may prevent scrolling if a user interacts with the map while map gestures are allowed to work. -
OfflineRoutingEngine
: Fixed missing walk sections for offline bicycle routing. - Navigation: Fixed an issue with
Route
data that was not considered correctly by some listeners for events such as SafetyCameraWarning
or TruckRestrictionWarning
. - Fixed
JunctionViewLaneAssistance
events that sometime were triggered too early when approaching a complex junction. - It is now possible to update the map cache to a newer map version - independently of offline maps. By calling
mapUpdater.performMapUpdate()
the map cache will be updated to a newer version (if available) - even if never any Region
was installed. If offline maps are available, then they will be updated together with the map cache, like before. If offline maps are installed later after the cache has been updated, the same map version will be used. It is not possible to use different versions for the map cache and offline maps. Note that with HERE SDK 4.12.2.0 or earlier, it was not possible to update the map cache alone when no offline maps data was installed beforehand.
Known Issues
- Sometimes, a crash may happen for turn-by-turn navigation, when a segment with a ferry set as
TransportMode
is ahead. - Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Turn-by-turn navigation does not start until an offline maps update or download is happening in parallel.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapDownloader
: It is not possible to delete a Region
when another download was interrupted. Workaround: The app needs to be restarted. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Indoor maps: Due to a HERE platform issue with credentials handling, indoor maps cannot be rendered together with the default map schemes. For now, only the indoor map can be seen, while the background with the map view stays gray. This issue only appears when you attempt to use indoor maps.
-
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - The newly introduced
TruckAmenities
feature is not highlighted as a beta API in the API Reference. - An unexpected large number of mountain peak labels is present on the map of USA, which reduces map readability and to a smaller extent performance.
-
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.2.0
New Features
- Search
Details
now contain EVChargingStationAttributes
- if applicable for a Place
. - Added a
TrafficDataProvider
interface that allows to integrate radio station signals providing traffic broadcasts. A TrafficBroadcast
is expecting the RDS-TMC format and it can be used when there is no internet connection, so that the OfflineRoutingEngine
can utilize traffic data coming over the radio channel. The activate()
method needs to be called to receive traffic data events. This class continuously reacts to new locations provided from a location source and acts as a LocationListener
. The location must be updated regardless of calling activate()
. In order to adopt the interface special hardware is required. Talk to your HERE representative for more details. This is released as a beta feature.
API Changes - Breaking
- Added support for
RoutePrefetcher
to VisualNavigator
. Previously, the feature was only available for the Navigator
. Replaced Navigator
with NavigatorInterface
in RoutePrefetcher
. - Removed
connectorTypeId
from the search type EVChargingStation
. The API is still in beta state.
Resolved Issues
- Fixed: Using
JunctionViewLaneAssistance
can slow down the time until guidance starts when no suitable map data is available in the cache. -
OfflineSearchEngine
: Corrected the allowed range of SearchOptions.maxItems
to [1, 100]. When not set, results will be limited to 20, by default (previously it was 5). This applies also to auto suggestion results. -
SearchEngine
: Corrected the allowed range of SearchOptions.maxItems
to [1, 100]. When not set, results will be limited to 20, by default. This applies also to auto suggestion results.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapDownloader
: It is not possible to delete a Region
when another download was interrupted. Workaround: The app needs to be restarted. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - An unexpected large number of mountain peak labels is present on the map of USA, which reduces map readability and to a smaller extent performance.
-
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.1.0
New Features
- EV routing: Added
PostAction.chargingDetails
to get ChargingActionDetails
, which supports additional parameters for EV charging such as arrivalChargeInKilowattHours
and targetChargeInKilowattHours
. The latter indicates the kWh level to which a vehicle's battery should be charged at a stop. - Added support for our new web-based unified HERE Style Editor that is available on the HERE platform. With the HERE Style Editor you can create highly customizable map styles. Note that custom map styles that have been made with the legacy desktop editor need to be migrated to the new HERE Style Editor format. Get in touch with your HERE representative to convert your existing styles. The HERE Style Editor is available via self-serve on the HERE platform.
- Replaced
MapScene.Layers
with a more flexible solution: All map layers can now be enabled or disabled as MapFeatures
specifying one ore more MapFeatureModes
. Pass a map of key / value pairs to the new MapScene
method enableFeatures(_ features: [String: String]) -> Void
. Hide a layer via disableFeatures(_ features: [String]) -> Void
. Query supported map features via getSupportedFeatures() -> [String: [String]]
and check currently active map features with getActiveFeatures() -> [String: String]
. Note that this is a beta release of this feature. - Guidance: Added
EXIT_ROUNDABOUT
as first maneuver when starting in a roundabout. - This version of the HERE SDK is delivered with map data version 47.
- Added a simplified way to initialize the HERE SDK manually. Using the default automatic initialization is still possible, but has been deprecated. Added
SDKNativeEngine.makeSharedInstance()
to safely initialize a shared instance of the SDKNativeEngine
. Calling this method also gracefully destroys any previous instance (if any). In order to deactivate auto-init, it is also required to remove credentials from plist
and to set them instead via SDKOptions
. As a result, the HERE SDK SDK will not be created automatically at startup. - Search: Added
TextQuery.includeChains
and TextQuery.excludeChains
that support search filtering by adding a list of PlaceChain
items. More information on chain IDs that correlate to specific places such as shops or stores can be found here. - Added map layer options for truck related vehicle restrictions. Added class
MapContentSettings
with the following methods: public static func filterVehicleRestrictions(truckSpecifications: TruckSpecifications, hazardousMaterials: [HazardousMaterial]?, tunnelCategory: TunnelCategory?)
public static func resetVehicleRestrictionFilter()
which controls filtering of displayed vehicle restrictions on the map when the MapScene.Layers.VEHICLE_RESTRICTIONS
layer is visible. Note that this is a beta release of this feature.
API Changes - Breaking
- Removed the previously deprecated
DynamicRoutingEngineDelegate
. User instead DynamicRoutingDelegate
.
API Changes - Deprecations
- Deprecated all constants defined in
MapScene.Layers
. Instead of using those constants with MapScene.setLayerVisibility()
, use the newly introduced MapScene.enableFeatures()
and MapScene.disableFeatures()
with the constants from MapFeatures
and MapFeatureModes
. Note that unlike layer visibility state, a map feature state is reset on loadScene()
. - Online
RoutingEngine
: Deprecated RoadFeatures.DIFFICULT_TURNS
. Use instead RoadFeatures.U_TURNS
.
Resolved Issues
- The response time to calculate routes with the
RoutingEngine
has been heavily improved.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapDownloader
: It is not possible to delete a Region
when another download was interrupted. Workaround: The app needs to be restarted. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. - Using
JunctionViewLaneAssistance
can slow down the time until guidance starts when no suitable map data is available in the cache. - An unexpected large number of mountain peak labels is present on the map of USA, which reduces map readability and to a smaller extent performance.
-
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.12.0.0
New Features
- We have launched a web-based HERE Style Editor to create custom map styles. The editor will be available for use with the upcoming release of HERE SDK 4.12.1.0.
- This version of the HERE SDK is delivered with map data version 45.
API Changes - Breaking
- Removed previously deprecated
MapScene.setLayerState(layerName: String, newState: MapScene.LayerState)
. Use MapScene.setLayerVisibility(...﹚
instead. Removed previously deprecated enum MapScene.LayerState
, use VisibilityState
instead. - The style for
MapScheme.normalNight
has been updated to improve readability: Increased brightness, saturation and contrast and reduced the number of different color tones. - A new web-based unified HERE Style Editor was made available on the HERE platform. The editor will be available for use with the upcoming release of HERE SDK 4.12.1.0. It is compatible with the Maps API for JavaScript (JSAPI) and the HERE SDK. Custom map styles that have been made with the legacy desktop editor need to be migrated to the new HERE Style Editor format. Get in touch with your HERE representative to discuss potential style updates until then. HERE SDK 4.12.0.0 is the last release that supports the old desktop format.
- Instantiation of
VenueEngine
requires now to catch a InstantiationErrorException
. - Monthly active users (MAU) are no longer counted when the HERE SDK is initialized. Instead, only usage counts, for example, when a
MapView
is shown, or when any engine like SearchEngine
, RoutingEngine
or any other engine - including MapDownloader
, RoutePrefetcher
, Navigator
and VisualNavigator
(for users of the Navigate Edition) - is instantiated. If credentials are changed at runtime, then usage is counted again. - Declared all the
LocationSimulator
delegate properties as weak. It is no longer necessary to manually set its delegates to nil
to break the retain cycle between conforming objects and their respective delegate variables.
API Changes - Deprecations
- Deprecated
Accomodation
, AccomodationHotelMotel
and AccomodationLodging
constants in PlaceCategory
. Use the newly added Accommodation
, AccommodationHotelMotel
and AccommodationLodging
constants instead. - The
MapLoaderError.tooManyRequests
error code has been renamed and deprecated. Use instead the newly introduced MapLoaderError.requestLimitReached
error code.
Resolved Issues
- Fixed backwards movement of
LocationIndicator
for VisualNavigator
when spans with zero length were present in a Route
. - Fixed redundant U-turn maneuvers that can happen sometimes for bicycle routes that have been created with the
OfflineRoutingEngine
. - Calling
SpatialManeuverAudioCuePanning.startPanning(nil)
does now work correctly. It is no longer necessary to call the method with CustomPanningData(mil, nil, nil)
as parameter as workaround.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapDownloader
: It is not possible to delete a Region
when another download was interrupted. Workaround: The app needs to be restarted. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.11.4.0
New Features
- Positioning: Added
LocationTechnology
to indicate the technology or the provider of a location update that was received with the LocationEngine
. Added optional locationTechnology
field to Location
class. Added optional gnssTime
to Location
class to provide another time format at which a location was determined. - This version of the HERE SDK is delivered with map data version 44.
- Navigation: Enhanced the
MapMatchedLocation
class with segmentReference
, segmentOffset
and confidence
- which ranges between 0 (poor accuracy) and 1 (best accuracy). Added localId
and tilePartition_id
to SegmentReference
. SegmentReference
is released as a beta feature to support upcoming features. - A
Route
contains now indexes for traffic incidents: Added getTrafficIncidentIndexes()
to Span
. The indexes are related to the traffic incidents in the parent Section
. This helps to find the exact positions of traffic incidents on a route. - EV routing: Added
availableConnectorCount
to EVChargingStation
. It represents the number of available physical connectors at a charging station. - Added support for spatial audio maneuver notifications during navigation that allow to adjust the stereo panorama of the text-to-speech in real-time. This happens based on the maneuver location in relation to a driver sitting in a vehicle. Added
SpatialManeuverNotificationDelegate
and SpatialManeuverAzimuthDelegate
. The first listener triggers notifications when spatial maneuvers are available. Meanwhile, the second one delivers SpatialTrajectoryData
: It contains the next azimuth angle to be used and it indicates wether the spatial audio trajectory has finished or not. Added SpatialManeuver
data, which contains the required data to spatialize the audio cues and SpatialManeuverAudioCuePanning
to create the designed spatial audio maneuvers. It takes CustomPanningData
as argument to startPanning()
- this allows not only to update the estimatedAudioCueDuration
of the SpatialManeuver
but also to customize its initialAzimuthInDegrees
and sweepAzimuthInDegrees
properties. - Added
setGeoCoordinates()
and getGeoCoordinates()
to Metadata
.
API Changes - Breaking
- Aligned the return value of
PickMapContentResult.TrafficIncidentResult.getOriginalId()
to return a String
instead of an integer. - Indoor Maps: It is now required to set a HRN value in order to use the
VenueService
. Added the setHrn()
method to VenueService
to set the HRN value for a platform catalog to fetch only the data for which an app is authorized. Internally, the HERE SDK renders indoor map data now in a new indoor map data format (MOM) which requires the HRN value. The visual representation of indoor map data is almost the same as before - except that the styling of selected indoor map features has been updated. - Removed the
IndoorRoutingEngine
as indoor routing is no longer supported for venues. - The zoom level behavior of the
MapCamera
has been aligned: Internally, the HERE SDK calculates now a zoom level with a pixel scale as reference instead of ppi. As a result, when a zoom level is set, the MapView
is zoomed in a bit less than previously. Note that this affects only the zoom level and not the camera's distance setting to earth. In addition, the maximum zoom level has been increased from 22 to 23.
Resolved Issues
- Fixed an issue with maneuver notification updates during navigation.
- Navigation: Fixed handling of truck speed limits on limited access roads for some countries.
-
offlineRoutingEngine.returnToRoute()
now properly updates the departure and arrival times of the resulting Route
. - Fixed
offlineRoutingEngine.returnToRoute()
when it returns to a section after the first one. - A
Route
created with the RoutingEngine
differentiates now between sections for stops and sections created due to a transport mode change: The waypointIndex
of the first departure place and the last arrival place are now set according to the waypoints indexes. - GPX coordinates are now explicitly converted to degrees in a
GPXDocument
before writing to a file. - Fixed crash in
VisualNavigator
: Each incoming maneuver refers now to its polyline as derived from its own section. Previously, all the maneuvers referred to the current section polyline.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapDownloader
: It is not possible to delete a Region
when another download was interrupted. Workaround: The app needs to be restarted. - When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Calling
SpatialManeuverAudioCuePanning.startPanning(nil)
does not work correctly. Instead, call the method with CustomPanningData(nil, nil, nil)
as parameter. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.11.3.0
New Features
-
ManeuverViewLaneAssistance
is now guaranteed to support left-hand and right-hand driving countries. No API change involved. - Added class
PickMapContentResult.TrafficIncidentResult
containing all data of a picked traffic incident. Added PickMapContentResult.trafficIncidents
property for retrieving picked traffic incidents. - This version of the HERE SDK is delivered with map data version 41.
- Added
MapCamera.lookAt(point: GeoCoordinates, zoom: MapMeasure)
and MapCamera.lookAt(point: GeoCoordinates, orientation: GeoOrientationUpdate, zoom: MapMeasure)
.
API Changes - Breaking
- By default, the
RoutePrefetcher
prefetched map data around a location with a radius of 10 km. This was reduced to 2 km.
API Changes - Deprecations
- Deprecated
MapCamera.lookAt(point: GeoCoordinates, distanceInMeters: Double)
and MapCamera.lookAt(point: GeoCoordinates, orientation: GeoOrientationUpdate, distanceInMeters: Double)
. Use instead the newly added lookAt()
methods to set a MapMeasure
, which allows now to specify if distance, scale or zoom level should be changed.
Resolved Issues
- Fixed:
SafetyCameraWarning
notifications are repeated too often. The notifications for the safety cameras ahead are now given only once. - Fixed a random crash for
RoutePrefetcher
that happend after route deviation.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. - Sometimes, turn-by-turn maneuver instructions on a highway result in "left fork" or right fork" instructions instead of just "continue on highway".
- When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress. - By default,
MapScene.Layers.trafficFlow
is no longer visible on the map. This is a license issue which affects all Navigate and Explore Edition users. Please contact us and ask for a HERE SDK license update to get traffic flow data. Your credentials will then be enabled to get access. Explore users can go directly to developer.here.com (instead of the HERE platform self-serve portal) as only the self-serve portal is affected.
Version 4.11.2.0
New Features
- Extended feature configurations: 3D landmarks can now be enabled or disabled as feature. Added the string "LANDMARKS3D" that can be specified in the _Plist for the "FeatureConfiguration" key.
- Added offline support for 3D landmarks. When the
MapScene.Layers.landmarks
is set to be visible, landmarks will be also visible offline when enough map data was loaded into the cache - or when the corresponding Region
was downloaded. -
OfflineRoutingEngine
: Added support for Waypoint.sideOfStreetHint
. - Added
RoutePrefetcher.prefetchAroundLocation()
which prefetches map data within a circle of radius 10 km of around a location. It is recommended to call this method once before starting navigation for a smooth user experience. - Added method
setCustomOptions()
to RoutingEngine
which allows adding custom options to each routing query. Use this feature at your own risk to experiment with Routing API v8 backend features that are not yet supported by the HERE SDK.
API Changes - Breaking
- Offline maps: Before downloading or deleting a
Region
, it is required to call getDownloadableRegions()
- only if a map update was performed beforehand. As a recommendation: Once MapUpdater
has completed an update process, call getDownloadableRegions()
to internally update the list of available Region
data.
API Changes - Deprecations
-
SearchEngine
: Deprecated existing constructors of TextQuery
and CategoryQuery
. Use newly added constructors taking TextQuery.Area
and CategoryQuery.Area
instead. - Deprecated
Section.departureTime
and Section.arrivalTime
properties. Use Section.departureLocationTime
and Section.arrivalLocationTime
properties instead. Added LocationTime
struct which which provides the local time, UTC time and the UTC offset, including DST time variations. - Deprecated
MapViewBase.pickMapFeatures(in: Rectangle2D, completion: @escaping (PickMapFeaturesResult?) -> Void)
, MapView.pickMapFeatures(in: Rectangle2D, completion: @escaping (PickMapFeaturesResult?) -> Void)
, PickMapFeaturesResult
. Use instead the newly introduced MapViewBase.pickMapContent(in: Rectangle2D, completion: @escaping (PickMapContentResult?) -> Void)
, MapView.pickMapContent(in: Rectangle2D, completion: @escaping (PickMapContentResult?) -> Void)
, PickMapContentResult
.
Resolved Issues
- Fixed failing traffic incident queries for
TrafficEngine
. - Fixed incorrectly reported
SpeedLimit
notifications for trucks that happened in some situations. -
OfflineRoutingEngine
: Fixed unnecessary detours that happened when waypoints are close to junctions. -
ManeuverNotificationOptions.enableHighwayExit
is now considered when notifications are received by ManeuverNotificationDelegate
. - Bus routes may not be fully accurate and the
TransportMode
of such routes is incorrectly changed to car
. Fixed value returned by the getSectionTransportMode()
method of a Section
for bus routes.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using Xcode 13 or higher 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. - Sometimes, turn-by-turn maneuver instructions on a highway result in "left fork" or right fork" instructions instead of just "continue on highway".
- When a feature configuration is applied, then the
MapDownloader
does not accurately show the updated size of a Region
. This does not affect the actual size on disk. -
SafetyCameraWarning
notifications are repeated too often. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - On some iPads the
LocationEngine
is not able to provide Location
updates with a higher accuracy than WiFi quality. As a result, during navigation it may happen that a driver's location is falsely interpreted to be off-road and map-matching fails - as the quality of the provided signal is too low. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.11.1.0
New Features
- Added 'MapImage(imageData: Data, imageFormat: ImageFormat, width: UInt32, height: UInt32)' to set a custom size. It will also accept PNG image data.
- Search: Added
Suggestion.id
that holds an auto suggest item ID. - Added a method to
MapView
to set a HERE watermark margin with mapView.setWatermarkPlacement(_ placement: WatermarkPlacement, bottomMargin: Int32)
.
API Changes - Breaking
- Removed the previously deprecated field
Location.timestamp
. Use the time
field instead.
API Changes - Deprecations
- Deprecated the method
MapView.setWatermarkPosition(placement: WatermarkPlacement, bottomCenterMargin: UInt32)
. Use the related setWatermarkPlacement()
method instead.
Resolved Issues
- Dark background issue fixed for
MapView
when using a webMercator
projection. - Fixed: Finding traffic on a route via
trafficEngine.queryForIncidents
fails unexpectedly for GeoCorridor
objects that are much shorter than 500 km.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. - Bus routes may not be fully accurate and the
TransportMode
of such routes is incorrectly changed to car
. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.11.0.0
New Features
- Added support for offline Bus route calculation via
OfflineRoutingEngine
and turn-by-turn navigation via Navigator
/ VisualNavigator
. - Added low-level 3D support to programmatically add custom 3D objects on the map. Added
MeshBuilder
, TriangleMeshBuilder
and QuadMeshBuilder
to construct different kinds of meshes from points in 3D space via Point3D
. The resulting Mesh
container can be used with a texture graphic to create MapMarker3D
objects. -
MapMarker3D
objects can now be scaled using a RenderSize.Unit
in meters
, pixels
and densityIndependentPixels
. - Added
CategoryQuery.excludeCategories
to add a list of PlaceCategory
items that should be excluded from a category search for places. These categories can be set with CategoryQuery.withExcludeCategories
. - Added enhanced animation support for
MapMarker
objects via the new MapMarkerAnimation
class. Such animations are based on a MapItemKeyFrameTrack
that stores keyframes for interpolation of a map item property. It can be constructed by calling MapItemKeyFrameTrack.moveTo(keyframes: [GeoCoordinatesKeyframe], easingFunction: EasingFunction, interpolationMode: KeyframeInterpolationMode)
. The animation can be started or cancelled via mapMarker.startAnimation(_ animation:)/cancelAnimation(_ animation:)
. - Added support for online Bus route calculation via
RoutingEngine
. Added TransportMode.bus
and BusOptions
. - Added
RoutePrefetcher
to improve the navigation experience. By calling its prefetchAroundRouteOnIntervals()
method it downloads map data in advance that may be needed during a trip. The data will be loaded automatically to the map cache and it will be used when the device is temporary offline - unless the device is fully operating offline using offline maps. - Added fade animations for
MapMarker
by setting fadeDuration: TimeInterval
. The marker will automatically fade-in when being added to the MapView
and fade-out when being removed. By default, this feature is disabled and the fadeDuration
property defaults to 0. - Added explicit support for flat
MapMarker3D
objects. Added a convenience constructor for MapMarker3D
with a MapImage
parameter to create a flat map marker. Use RenderSize.Unit
with densityIndependentPixels
to create flat marker with a fixed size - independent of zoom level. - Added support for the travelling salesman use case. Multiple stopover
Waypoint
items along a Route
can now be ordered automatically by setting RouteOptions.optimizeWaypointsOrder
. If set to true
, the OfflineRoutingEngine
will try to optimize the waypoints order to reach the destination faster or to make the route shorter. The feature is not yet supported for the online RoutingEngine
. Note that this is a beta release of this feature. - Added support to record a navigation session for later use with the new
GPXTrackWriter
- for example, to test new app features or to replay and analyse unexpected behavior. Add the GPXTrackWriter
as a listener to LocationEngineBase
via addLocationDelegate()
for GPX track recording. Use the GPXDocument
to load the GPX track from file or from a recorded track. Only track data is used from the GPX format. Any unknown elements in the file are ignored. Any known element with an invalid value returns an error. Elevation values are ignored. Use GPXDocument.save()
to save loaded tracks to a file pointed by name: It returns true
if succeeded and false
otherwise. - Added enhanced camera animations with
MapCameraAnimationFactory.flyTo(target: GeoCoordinatesUpdate, bowFactor: double, duration: TimeInterval)
, MapCameraAnimationFactory.flyTo(target: GeoCoordinatesUpdate, orintation: GeoOrientationUpdate, bowFactor: double, duration: TimeInterval)
, MapCameraAnimationFactory.flyTo(target: GeoCoordinatesUpdate, zoom: MapMeasure, bowFactor: double, duration: TimeInterval)
, MapCameraAnimationFactory.flyTo(target: GeoCoordinatesUpdate, orintation: GeoOrientationUpdate, zoom: MapMeasure, bowFactor: double, duration: TimeInterval)
. - Added offline support for
RouteOptions.arrivalTime
. This field will be ignored if RouteOptions.enableTrafficOptimization
is set to false
. Cannot be set along with RouteOptions.departureTime
.
API Changes - Breaking
- Removed the previously deprecated
InstantiationErrorCode.failedToLockPersistentMapStorageFolder
. Nothing to use instead: The persistent storage directory is no longer locked. - Removed the previously deprecated
SectionNoticeCode.violatedPedestrianOption
symbol. Nothing to use instead as this is is no longer supported.
API Changes - Deprecations
- Deprecated
MapCamera.FlyToOptions`` and all
MapCamera.flyToAPIs. Use
MapCameraAnimationFactory.flyTo` APIs instead. - Deprecated
Section.trafficSpeeds
property. Use instead Span.trafficSpeed
property.
Resolved Issues
- The
TrafficEngine
can handle now GeoCorridor
objects without a radius. When the radius via halfWidthInMeters
is unset, a default value of 30 meters is used. - A
GPXDocument
no longer ignores the timezone in the GPX track point time of the imported GPX file. It reads now correctly the track point timezone as UTC. - Fixed an issue for TTS maneuver notifications where abbreviated names have been incorrectly translated in German when using the
ManeuverNotificationDelegate
. - The
returnToRoute()
feature of the RoutingEngine
now routes back to the first untravelled waypoint and the routeFractionTraveled
parameter is no longer ignored.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Finding traffic on a route via
trafficEngine.queryForIncidents
fails unexpectedly for GeoCorridor
objects that are much shorter than 500 km. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.10.5.0
New Features
- Added
MapMeasureRange
class to hold a MapMeasure
range, MapCameraLimits.zoomRange: MapMeasureRange
property. - Added support for custom backends with the new
EngineBaseURL
enum and the customEngineBaseUrls
field in SDKOptions
. - Added
MapCameraLimits.tiltRange(AngleRange)
property. - Added support for
Pedestrian
routes and transport mode in OfflineRoutingEngine
and for navigation. - Japan is now available as a separate offline maps
Region
download via MapDownloader
. With enabled credentials, high-quality Japan map data can be downloaded. By default, only low-quality basic map data is available for download. Talk to your HERE representative to enable high-quality Japan map data. Note that this feature is already available since v4.10.4.0. - Route alternatives are now fully supported for electric vehicles. EV route alternatives are enabled when
routeOptions.alternatives
is in the range [1, 6]. Note that this feature is already available since v4.10.4.0. - Added
MapCameraLimits.setBearingRangeAtZoom(_ zoom: MapMeasure, bearingRange: AngleRange)
, MapCameraLimits.clearBearingRanges
, MapCameraLimits.setTiltRangeAtZoom(_ zoom: MapMeasure, tiltRange: AngleRange)
and MapCameraLimits.clearTiltRanges
. - Added
MapCamera.cancelAnimation(_ cameraAnimation: MapCameraAnimation)
and MapCamera.cancelAnimations
methods. - Added
MapCameraDelegate
protocol, MapCamera.addDelegate(_ delegate: MapCameraDelegate)
, MapCamera.removeDelegate(+ delegate: MapCameraDelegate)
and MapCamera.removeDelegates
methods.
API Changes - Deprecations
- Deprecated
LocationSimulatorOptions.notificationIntervalInMilliseconds
. Use LocationSimulatorOptions.notificationInterval
instead. - Deprecated
Location.timestampSinceBootInMilliseconds
. Use Location.timestampSinceBoot
instead. - Deprecated
MapCameraLimits.setMinTilt(degreesFromNadir: double)
and MapCameraLimits.setMaxTilt(degreesFromNadir: double)
. Use MapCameraLimits.tiltRange(AngleRange)
property instead. - Deprecated
MapCamera.cancelAnimation
method. Use MapCamera.cancelAnimations
instead. - Deprecated
MapCameraLimits.setMinZoomLevel(double)
, MapCameraLimits.setMaxZoomLevel(double)
, MapCameraLimits.ErrorCode
, MapCameraLimits.MapCameraLimitsException
. Use MapCameraLimits.zoomRange: MapMeasureRange
property instead. - Deprecated
MapCameraObserver
protocol, MapCamera.addObserver(_ observer: MapCameraObserver)
and MapCamera.removeObserver(_ observer: MapCameraObserver)
methods. Use MapCamera.addDelegate(_ delegate: MapCameraDelegate)
and MapCamera.removeDelegate(_ delegate: MapCameraDelegate)
instead. - Deprecated
DynamicRoutingEngine.pollIntervalInMinutes
. Use DynamicRoutingEngine.pollInterval
instead.
Resolved Issues
- Fixed incorrect handling of
RouteOptions.occupantsNumber
while requesting a route. - Routing: Fixed incorrect offset calculation for departure/arrival time that happens when converting to UTC time.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Finding traffic on a route via
trafficEngine.queryForIncidents
fails unexpectedly for GeoCorridor
objects that are much shorter than 500 km. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.10.4.0
New Features
- Added
RouteOptions.occupantsNumber
support when using the OfflineRoutingEngine
. - Added
sdk.transport.HazardousMaterial
enum. It is meant to replace the deprecated sdk.routing.HazardousGood
. - Added
ManeuverNotificationTimingOptions
in Navigator
to configure maneuver notification timings. This allows to customize the default distance and time thresholds that are used for TTS voice guidance. - Traffic incident queries can now be canceled by calling the
cancel()
method of the TaskHandle
object returned by the TrafficEngine
.
API Changes - Deprecations
- Deprecated
sdk.routing.HazardousGood
enum. Use 'sdk.transport.HazardousMaterial' instead. - Deprecated
EVTruckOptions.hazardous_goods
. Use EVTruckOptions.hazardous_materials
instead. - Deprecated
TruckOptions.hazardous_goods
enum. Use 'TruckOptions.hazardous_materials' instead.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. -
MapDownloader
: The sizeOnDiskInBytes
property of Region
and InstalledRegion
slightly differs. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.10.3.0
New Features
- Added altitude handling for offline routing.
- Added property
isDepthCheckEnabled
to MapMarker3D
class. This improves rendering for complex 3D objects such as a torus. - Added support for
UNKNOWN
value from TrafficIncidentImpact
and TrafficIncidentType
enums to enable filtering for traffic incidents. This value indicates that all types/impacts are requested from the backend and filtering will be applied thereafter by the HERE SDK. - Added
MapCameraUpdateFactory.setNormalizedPrincipalPoint(_ principalPoint: Anchor2D)
method to animate camera's principal point using normalized screen coordinates. - Added
Anchor2DKeyframe
class to be used in animation of normalized principal point. Added MapCameraKeyframeTrack.normalizedPrincipalPoint(keyframes: [Anchor2DKeyframe], easingFunction: EasingFunction, interpolationMode: KeyframeInterpolationMode)
that creates keyframe track for animating normalized principal point. Added MapCameraKeyframeTrack.getAnchor2DKeyframes()
method. Added MapCameraUpdateFactory.setNormalizedPrincipalPoint(Anchor2D)
method. - Visibility of embedded default carto POIs on the map has been improved.
- Added colors related to landuse area polygons in the night scheme have been updated.
- Added
MapIdleDelegate
to detect whether the map is idle or busy.. Added HereMap.addMapIdledelegate(MapIdleDelegate)
to start receiving idle state notifications and HereMap.removeMapIdleListener(MapIdleDelegate)
to stop receiving idle state notifications. - Added
initialBackgroundColor
to MapViewOptions
and constructor to set initial background color. Initial background color will be shown until the first map scene has been loaded. - Updated colors related to street network elements for the night scheme.
API Changes - Deprecations
- Deprecated unsupported method
RasterDataSource.changeConfiguration(_ configFile: String)
. Use the another constructor instead. - Deprecated
BatterySpecifications.changingSetupDurationInSeconds
. Use BatterySpecifications.changingSetupDuration
instead. - Deprecated
Maneuver.durationInSeconds
. Use Maneuver.duration
instead. - Deprecated
Section.durationInSeconds
. Use Section.duration
instead. - Deprecated
Section.trafficDelayInSeconds
. Use Section.trafficDelay
instead.
- Deprecated
SectionProgress.remainingDurationInSeconds
. Use SectionProgress.remainingDuration
instead. - Deprecated
SectionProgress.trafficDelayInSeconds
. Use SectionProgress.trafficDelay
instead. - Deprecated
SectionProgress
constructor with parameters. Use the default constructor instead. - Deprecated
ManeuverProgress.remainingDurationInSeconds
. Use ManeuverProgress.remainingDuration
instead. - Deprecated
ManeuverProgress
constructor with parameters. Use the default constructor instead.
- Deprecated
Waypoint.durationInSeconds
. Use Waypoint.duration
instead. - Deprecated
DynamicRoutingEngineOptions.minTimeDifferenceInSeconds
. Use DynamicRoutingEngineOptions.minTimeDifference
instead. - Deprecated
Route.durationInSeconds
. Use Route.duration
instead. - Deprecated
Route.trafficDelayInSeconds
. Use Route.trafficDelay
instead.
- Deprecated
MapCameraUpdateFactory.setPrincipalPointOffset(_ principalPointOffset: Point2D)
method. Use MapCameraUpdateFactory.setNormalizedPrincipalPoint(_ principalPoint: Anchor2D)
instead. - Deprecated
PostAction.durationInSeconds
. Use PostAction.duration
instead. - Deprecated
PostAction
constructor with parameters. Use the default constructor instead. - Deprecated
PreAction.durationInSeconds
. Use PreAction.duration
instead. - Deprecated
PreAction
constructor with parameters. Use the default constructor instead.
- Deprecated
TransitStop.durationInSeconds
. Use TransitStop.duration
instead. Deprecated TransitStop(departure, durationInSeconds)
constructor with parameters. Use the default constructor instead. - Deprecated
links
in sdk.routing.Section
. Use spans
instead.
Resolved Issues
- Fixed: Sometimes the
VisualNavigator
informs too late on RouteProgress
after guidance start. - Truck guidance no longer ignores truck specific legal speed limits (CVR). Limits are provided as part of the
SpeedLimit
event when transport mode truck
is set. Use map version 32 or newer. - Adding custom raster layers no longer hides the HERE logo.
- Removed copying geometry when there is only one section.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. -
sdk.Navigator.getManeuverNotificationTimingOptions
and sdk.Navigator.setManeuverNotificationTimingOptions
accept sdk.routing.TransportMode
as argument, it will be changed to sdk.transport.TransportMode
in the next minor release. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.10.2.0
New Features
- Find traffic along a route: Added class
TrafficIncidentOnRoute
and read-only property Section.trafficIncidents
. It represents traffic incidents on the route that are relevant for the section. - The
RoutingEngine
is now able to provide routes that contain altitude values along the route. - Added support for project scopes: With the new
plist
key option to specify a Scope
an app can set the HRN value as defined by your project ID. Each app belongs to at least one or multiple projects. A possible use case can be to define a debugScope. See SDKOptions
and the IAM Guide for more details. - Added
isTruckLight
flag to TruckSpecifications
. It indicates that the truck can be classified as a car and that it is therefore excluded from legal restrictions (such as truck speed limits) for normal trucks when calculating the route. Note that specifications such as the physical dimensions, cargo, and others, are still taken into account. - Feature configurations can now be updated at the next application update. Added
performFeatureUpdate
method to MapUpdater
class. Call this method once a feature configuration has been updated in plist
file. As a result, the cached map data will be deleted and subsequently updated. Also, the downloaded regions will be updated to reflect the changes. Note that it is the developer's responsibility to decide when to perform the update. The HERE SDK does not decide or notify when such an update can be made. Calling performFeatureUpdate
is only necessary once, after an application has been updated. Use feature configurations to limit the map data that is downloaded when panning and zooming the map view - or when downloading offline regions.
API Changes
- Deprecated
Section.polyline
, use Section.geometry
instead. - Deprecated
FarePrice.validityPeriodInSeconds
. Use FarePrice.validityPeriod
instead. - Deprecated
AuthenticationData.expiryTimeInSeconds
. Use AuthenticationData.expiryTime
instead. - Deprecated
Route.polyline
, use Route.geometry
instead.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. - Sometimes the
VisualNavigator
informs too late on RouteProgress
after guidance start. - Truck guidance ignores truck specific speed limits (CVR). Currently, only the speed limits as they are valid for cars are provided as part of the
SpeedLimit
event. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Transparency for
MapPolylines
is not supported. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.10.1.0
New Features
- Routing: Route calculations can now be canceled via the returned
TaskHandle
when calling calculateRoute()
or related methods on engines such as the RoutingEngine
. - BYOD: Extended
GeoPlace
to hold more information: Added ExternalID
, LocationDetails
, WebDetails
, BusinessDetails
, TaskCompletionHandler
as lambda. - Added
matchSideOfStreet
property to Waypoint
class. It specifies how the location set by sideOfStreetHint
should be handled when reaching a destination. - Added global
ParameterConfiguration
that holds default values for HERE SDK features. For now, this allows to specify a walkingSpeedInMetersPerSecond
to define a default pedestrian movement. Added TransitRouteOptions.fromDefaultParameterConfiguration()
and PedestrianOptions.fromDefaultParameterConfiguration()
that allow to create TransitRouteOptions
and PedestrianOptions
that will use the values set via ParameterConfiguration
. The created options can then be used as usual for route calculation. Note that this is a beta feature. - Navigation: Added
SpeedLimit.optimalWeatherSpeedLimitInMetersPerSecond
property. - Added a new
TrafficEngine
that allows querying for current traffic incidents. Check the Traffic example app to see how it works. The TrafficEngine
supports querying for traffic incidents in a bounding box, a circle, or a corridor. Querying for the exact traffic incident by ID. Traffic incidents can contain an incident type, an incident impact, an incident location (currently, a polyline with length), incident codes, an active time range, localized by the queried language description and summary, relevant vehicle restrictions, and more. It supports representations of traffic incident vehicle restrictions as a set of restricted vehicle properties of some vehicle category and filtering queried incidents by an incident type, an incident impact and an active time range. - Added
RouteOptions.occupantsNumber
: An option reflecting the number of occupants in a vehicle. Supported for car
and truck
transport modes. When it is higher than 1 it affects a vehicles ability to use HOV/carpool lanes. Defaults to 1. - Added support for truck speed limits and CVR (Commercial Vehicle Regulated) speed limits for
SpeedLimitListener
and SpeedWarningListener
. Governmental regulations can specify an upper speed limit for certain vehicle types, such as trucks. If a local road sign indicates a speed limit of 130 km/h, then this can be overruled: In Germany, for example, the maximum allowed speed for trucks is 100 km/h. When navigation or tracking is started then the SpeedLimitListener
and SpeedWarningListener
will use the set TransportMode
to notify on truck or car speed limits. As a result, a truck driver will receive on German highways never a speed limit notification that is higher than 100 km/h. Note that this feature is only available for map data >= 32 - as indicated by MapUpdater.getCurrentMapVersion()
. - Navigation: Added support for smooth location interpolation. This feature is already effective when using the
VisualNavigator
. Now it is also possible to get the calculated interpolated locations directly from the newly added InterpolatedLocationListener
from a VisualNavigator
instance. This allows for more customization options, for example, to smoothly animate map objects or new map view instances that show a different perspective than the main map view display.
API Changes
- Removed the previously deprecated
Maneuver.polyline
. Use instead Section.polyline
together with Maneuver.sectionIndex
and Maneuver.offset
. - Routing: Deprecated a route's
Link
. Use Span
instead.
Resolved Issues
- Navigation: Fixed an issue with truck vehicle restriction notifications.
- Fixed: 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.
- Fixed: 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. - Fixed: Navigation: Maneuver voice notifications are sometimes triggered too early.
- Fixed: When
cachePath
and persistentMapStoragePath
are changed via SDKOptions
, then it may not change the default path. - Fixed
ManeuverNotifications
for pedestrians: The timing when to trigger voice notifications is now adapted for pedestrians based on the set transport mode. - Fixed: Truck routes that are imported via
importRoute()
may be result in a RoutingError.NO_ROUTE_FOUND
error as certain truck restrictions may be violated along the road. This is incorrect and instead the resulting route should contain the violated restrictions as part of the route's SectionNotice
. - Fixed
VisualNavigator
that was showing two location indicators when a custom location indicator was set.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. -
MapViewPin
instances cannot be removed after tilting and panning the map. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Transparency for
MapPolylines
is not supported. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
RoutingEngine
: The route import feature via a list of Locations
cannot be used yet commercially and requires custom access credentials. Please contact your sales representative to get access. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress.
Version 4.10.0.0
New Features
- Navigation: Added
MilestoneStatusListener
that informs if a milestone has been reached or missed. For this, check the newly introduced MilestoneStatus
. -
MapView
: Added support for mercator projection when a MapView
is created programmatically. Note that for a future HERE SDK release it is planned to allow this also for MapView
instances that are created from a layout file. Added MapViewOptions
and MapProjection
that allow to specify the map projection. Examples: let mapView = MapView(options: MapViewOptions(projection: .globe))
let mapView = MapView(options: MapViewOptions(projection: .webMercator))
let mapView = MapView(frame: parentFrame, options: MapViewOptions(projection: .globe))
-
let mapView = MapView(frame: parentFrame,options: MapViewOptions(projection: .webMercator))
- Added
MapContext
class and added mapContext
read property to MapView
. A MapContext
is needed when custom data sources for map tiles should be created, such as the new RasterDataSource
to support custom raster layers on a MapView
. -
MapView
: Added support custom raster layers that can be shown as tile overlay on top of the map. Note: This is a beta release of this feature, so there could be a few bugs and unexpected behaviors. Related APIs may change for new releases without a deprecation process. The following classes have been added to support custom raster layers: - Added
RasterDataSource
which represents the source of raster tile data to display. It also allows changing its configuration. - Added
RasterDataSourceConfiguration
which is used to specify a configuration for the data source, including URL, tiling scheme, storage levels and caching parameters. - Added
TilingScheme
enum which specifies how the tile data has to be interpreted. - Added
RasterDataSourceListener
interface which can be used to receive notifications from the RasterDataSource
. - Added
MapLayer
class which represents a renderable map overlay and controls its visibility. - Added
MapLayerBuilder
which is used to create MapLayer
objects. - Added
MapLayerPriority
which specifies the order of drawing a map layer. - Added
MapLayerVisibilityRange
which specifies at which zoom levels the map layer will become visible. - Added
MapContentType
which specifies the type of data shown by the MapLayer
.
- Added support for feature configurations that allow to specify how much map data should be loaded when panning the
MapView
or when downloading a new Region
for offline usage. For example, if a feature like turn-by-turn navigation is never used in an application, it can be removed. As a result, when panning the MapView
less data will be downloaded into the cache. In addition, when downloading a new Region
, its size will be smaller. By default, all features are enabled. However, if a "FeatureConfiguration" is present in the Plist
file, then only the listed features will be enabled, all others will be disabled. If you want to disable only one feature, then all other features need to be present, or they will be also disabled. For example, the following enables only navigation and truck features and disables all others: <key>FeatureConfiguration</key><array><string>NAVIGATION</string><string>TRUCK</string></array>
. As of now, these features can be specified: - "DETAIL_RENDERING": Additional rendering details like buildings. Only used for the
MapView
. - "NAVIGATION": Map data that is used for map matching during navigation. When not set, navigation may not work properly when being used offline.
- "OFFLINE_SEARCH": Map data that is used to search. When not set, the
OfflineSearchEngine
may not work properly when being used offline. - "OFFLINE_ROUTING": Map data that is used to calculate routes. When not set, the
OfflineRoutingEngine
may not work properly when being used offline. - "TRUCK": Map data that is used to calculate truck routes. When not set, the
OfflineRoutingEngine
may not work properly when being used offline to calculate truck routes. It is also used for map matching during truck navigation. When not set, truck navigation may not work properly when being used offline.
-
MapView
: Added support for textured 3D landmarks. Enable 3D landmarks with the new MapScene.Layers.LANDMARKS
constant like so: mapView.mapScene.setLayerVisibility(layerName: MapScene.Layers.landmarks, visibility: Visibility.visible)
. Note that landmarks are only supported for newer map data >= 25, see MapUpdater.getCurrentMapVersion()
. To ensure that 3D landmarks are visible, a map update may be required. Once a Region
was updated, the map cache will be aligned automatically. Note that landmarks are released as beta. - Added
HereMap
class. Added hereMap
read only property to MapView
. HereMap
is used to initialize a MapLayer
that can be used with a MapLayerBuilder
to support custom raster layers. - Import routes: Added
init(handle: String)
constructor that allows to create a RouteHandle
from a given string handle. Such a string can be provided from other backend sources such as HERE REST APIs and it is valid for a couple of hours. The string encodes a calculated route and it can be used to import this route via the newly added method importRoute(routeHandle:refreshRouteOptions:completion:)
of the RoutingEngine
for further use with the HERE SDK. Note: This is a beta release of this feature. - Search: Added a default constructor for
Address
. - Added support for BYOD (bring your own data) at runtime when searching for places. It's now possible to inject custom data for places that can be found with the
OfflineSearchEngine
. Such personal places can be found by regular queries. The results are ranked as other places coming directly from HERE. A new GeoPlace
class was introduced that can contain custom place data. Multiple GeoPlace
instances can be filled into a new data source called MyPlaces
. This data source can be attached to the OfflineSearchEngine
with its new attach()
method. The added OnTaskCompleted
event and TaskOutcome
class are used to communicate the result of this asynchronous operation. -
OfflineRoutingEngine
: Maneuver.exitSignTexts
is now supported when calculating routes offline. - Voice guidance: The
ManeuverNotificationOptions
have been extended with additional options and a ManeuverNotificationType
to filter when voice texts are given: -
enableDestinationReachedNotification
: A flag that indicates whether notifications for destination/stopover reached maneuvers should be generated. -
enableDoubleNotification
: A flag that indicates whether double maneuver notification should be generated. -
enableHighwayExit
: A flag that indicates whether highway exit information should be used when generating notifications. -
enablePhoneme
: A flag that indicates whether phoneme for direction information should be used when generating notifications. -
enableRoundaboutNotification
: A flag that indicates whether notifications for roundabout-related maneuvers should be generated. -
includedNotificationTypes
: List of ManeuverNotificationType
for which notifications should be generated. -
roadNumberUsageOption
: An option whether road numbers should be used when generating notifications. -
signpostDirectionUsageOption
: An option whether signpost directions should be used when generating notifications. -
streetNameUsageOption
: An option whether street names should be used when generating notifications.
API Changes
- The lane assistance API is now stable and the beta status has been removed.
- Deprecated
MilestoneReachedDelegate
, please use the newly introduced MilestoneStatusDelegate
instead. - Removed the previously deprecated classes
MapCamera.Orientation
, MapCamera.OrientationUpdate
, MapCamera.State.targetOrientation
and all methods using them. Use instead the new methods that use the new classes GeoOrientation
, GeoOrientationUpdate
and MapCamera.State.orientationAtTarget
. For example, instead of the removed method MapCamera.lookAt(point: GeoCoordinates, orientation: OrientationUpdate, distanceInMeters: Double)
use now MapCamera.lookAt(point: GeoCoordinates, orientation: GeoOrientationUpdate, distanceInMeters: Double)
. - Removed the previously deprecated
GeoCorridor.radiusInMeters
property. Use the new property GeoCorridor.halfWidthInMeters
instead. - Removed the previously deprecated
FarePrice.unit
property. Use instead the FarePrice.validityPeriodInSeconds
property. - Removed the previously deprecated
Agency.icon
property. This feature is no longer supported. - Removed the previously deprecated map schemes: "preview.normal.day.json", "preview.normal.night.json", "preview.hybrid.day.json", "preview.hybrid.night.json". Use corresponding standard schemes instead:
MapScheme.normalDay
, MapScheme.normalNight
, MapScheme.hybridDay
, MapScheme.hybridNight
. - Removed the previously deprecated
LaneAssistanceListener
. Use instead ManeuverViewLaneAssistanceListener
. - Deprecated the method
MapScene.setLayerState(layerName: String, newState: MapScene.LayerState)
. Use the new method MapScene.setLayerVisibility(layerName: String, visibility: VisibilityState)
instead. Deprecated the enum MapSceneLayerState
. Use the enum VisibilityState
instead. Deprecated the enum MapScene.LayerState
. Use the enum VisibilityState
instead.
Resolved Issues
- Voice guidance: Fixed errors for Hindi and Korean voice packages, which were causing missing notifications for some cases.
- Fixed: During navigation, sometimes turn now maneuver notifications are provided too early.
- Fixed
LocationIndicator
position on the screen when the MapView
is tilted. - Routing: It is now possible to set a stop duration for each waypoint so that a better overal ETA can be given. Added 'durationInSeconds' property to
Waypoint
. It defaults to 0. Note that it will be ignored for pass-through waypoints. - Fixed:
MapViewLifecycleListener.onAttach()
is now called once MapView
has been fully initialized. -
LocationSimulatorOptions.notificationIntervalInMilliseconds
: Fixed issues with too short notification intervals. Values less than 1 ms are clamped to 1 ms to guarantee normal location updates during guidance simulation. - Fixed: HERE Positioning /
LocationEngine
does not work yet with Android 12. - Fixed: During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. A new MilestoneStatusListener
has been added that informs if a milestone has been reached or missed.
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. - Navigation: Maneuver voice notifications are sometimes triggered too early.
- 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. - Outlines for
MapPolyine
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Truck routes that are imported via
importRoute()
may be result in a RoutingError.NoRouteFound
error as certain truck restrictions may be violated along the road. This is incorrect and instead the resulting route should contain the violated restrictions as part of the route's SectionNotice
. - Offline maps: When the same
Region
is downloaded multiple times, then multiple attempts to download the data are being made instead of answering with an error that a download for this Region
is already in progress. - When
cachePath
and persistentMapStoragePath
are changed via SDKOptions
, then it may not change the default path.
Version 4.9.4.0
New Features
- Routing: Introduced
Departure
and Arrival
time for each Section
of a Route
. - Routing: Added support for bicycles. Now it is possible to create bicycle routes online with the
RoutingEngine
using BicycleOptions
. Added also TransportMode.bicycle
. - Routing: Added optional field
nameHint
to Waypoint
. For cases when there are multiple places at the same geographic coordinate, this hint can help the RoutingEngine
to find the expected place. For example, "North" can be set to differentiate between interstates "I66 North" and "I66 South". - Routing: It's now possible to set
TaxiOptions.allowDriveThroughTaxiRoads
. It allows to calculate routes that make use of roads and lanes that are reserved for taxis. - Bicycle routes are now also supported for turn-by-turn navigation and tracking.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Navigation: Maneuver voice notifications are sometimes triggered too early.
- 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. - Outlines for
MapPolyine
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Navigation: Sometimes turn now maneuver notifications are provided too early.
- HERE Positioning /
LocationEngine
does not work yet with Android 12. Support is planned with HERE SDK 4.10. - Truck routes that are imported via
importRoute()
may be result in a RoutingError.NoRouteFound
error as certain truck restrictions may be violated along the road. This is incorrect and instead the resulting route should contain the violated restrictions as part of the route's SectionNotice
.
Version 4.9.3.0
New Features
-
OfflineRoutingEngine
: Added support for notice spans - as already known from the online RoutingEngine
. - Added new map layer with
MapScene.Layers.safetyCameras
to show safety camera icons on the map. - The visibility of embedded carto POIs on the map can now be controlled with the new static method
MapScene.setPoiVisibility(categoryIds: [String], visibility: VisibilityState)
to set a VisibilityState
for a list of POI categories.
Resolved Issues
-
OfflineRoutingEngine
: For truck routes now a SectionNotice
with violated restrictions is provided instead of a route calculation resulting in a RoutingError
. - Navigation: Improved tunnel extrapolation during tracking mode.
- Fixed: Picking map features such as embedded POIs and map items via
mapView.pickMapItems
and mapView.pickMapFeatures
is currently not possible at the same time. - Fixed
enterHigway
maneuver action which was incorrectly reported as turn left / right instead of left / right fork. - Fixed: Changing
SpeedLimit
values are now detected correctly during a trip. - Fixed: Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. - Fixed: The traffic layers
MapScene.Layers.TRAFFIC_FLOW
and MapScene.Layers.TRAFFIC_INCIDENTS
may not be instantly visible when starting an app for the first time. - Fixed: Setting the map layer
VEHICLE_RESTRICTIONS
is currently ignored and the layer is not visible.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Navigation: Maneuver voice notifications are sometimes triggered too early.
- 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. - Outlines for
MapPolyine
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Navigation: Sometimes turn now maneuver notifications are provided too early.
- HERE Positioning /
LocationEngine
does not work yet with Android 12. Support is planned with HERE SDK 4.10.
Version 4.9.2.0
Highlights
- Added simulator support for M1 machines with a new ios-arm64_x86_64-simulator framework that is included now in the XCFramework along with the ios-arm64 framework. Now it is possible to start simulators without any workaround on M1 machines. Note that bitcode optimization is only enabled for ios-arm64.
New Features
- Added
LocationIndicator.updateLocation(Location location, MapCameraUpdate cameraUpdate)
to update the location of the indicator and the target coordinates of the MapView
at the same time - for example, when tracking the user's location. - Offline Routing: Enabled a property for
RouteOptions
that allows to set an upper limit of the driving speed of a vehicle: speedCapInMetersPerSecond
is available for car and truck transport modes. It can affect route path and ETA. Note that this property was already available for online routing. - Added a feature to observe when a
MapCamera
animation or flyTo()
-call has been completed: Added AnimationDelegate
interface, 'AnimationState' enumeration and MapCamera.startAnimation
. - Added a feature to pick embedded carto POIs. By default, embedded POIs are visible on the map and they can be picked now via
mapView.pickMapFeatures()
to get a PickMapFeaturesResult
that contains a PoiResult
. Check the Developer's Guide for a usage example. - Added a convenience feature to tie a
LocationIndicator
directly to the MapView
's life cycle'. For example, be calling the new enable()
method, the LocationIndicator
is visible on the map. This has the same affect as when calling mapView.addLifecycleDelegate(locationIndicator)
. Added constructor LocationIndicator(for mapView: MapViewBase)
, added methods LocationIndicator.enable(for mapView: MapViewBase)
, LocationIndicator.disable()
. -
MapMarkerCluster
items can now be picked - and when picking other map items, clustered markers are no longer returned via pickMapItemsResult.getMarkers()
. Instead, call the new pickMapItemsResult.getClusteredMarkers()
method. See the MapItems
example app and the Developer's Guide for a usage example.
Resolved Issues
-
VisualNavigator
: Fixed out of sync maneuver arrows after a route recalculation. - Fixed: Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. - Navigation: Maneuver voice notifications are sometimes triggered too early.
- 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. - The traffic layers
MapScene.Layers.TrafficFlow
and MapScene.Layers.TrafficIncidents
may not be instantly visible when starting an app for the first time. - Outlines for
MapPolyine
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Setting the map layer
vehicleRestrictions
is currently ignored and the layer is not visible. - Picking map features such as embedded POIs and map items via
mapView.pickMapItems
and mapView.pickMapFeatures
is currently not possible at the same time.
Version 4.9.1.0
New Features
- Offline routing: Added
PreActions
and PostActions
handling related to a time needed to board/disembark a ferry. - Added
removeMapMarkers()
method to MapScene
class. It removes multiple map markers in a batch call.
API Changes
- Removed deprecated tag for
persistentMapStorageFolderAccessDenied
. persistentMapStorageFolderAccessDenied
is not deprecated anymore. - Deprecated
MapCamera.FlyToOptions.durationInMs
, use MapCamera.FlyToOptions.duration
instead.
Resolved Issues
- Fixed: Route imports no longer fail when
Location.time
is set. - Navigation: Fixed location jumps after leaving tunnels.
- ReturnToRoute: Fixed rerouting during navigation. It considers now the original
RouteOptions
. - Offline routing: Fixed missing country code value for
Maneuver
class. - Fixed:
VisualNavigator
now restores/removes map items when attaching or detaching a mapview. - Fixed navigation issues when obsolete GPS locations where being queued and processed after new locations were already available.
- Fixed: Navigation now prefers the optional
Location.time
when set. - Fixed:
VisualNavigator
now updates MapView
based on events sent by MapViewLifecycleDelegate
. This prevents that tracking is stopped after coming back to foreground. - Fixed a short pink screen, that can appear before the first display of a
MapView
.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. - Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated
- Navigation: Maneuver voice notifications are sometimes triggered too early.
- 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 markers can be identified by setting a unique Metadata
key to the contained MapMarker
items of a cluster. 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. - Outlines for
MapPolyine
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Setting the map layer
vehicleRestrictions
is currently ignored and the layer is not visible.
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. - Search: Added support for offline
Suggestion
results. Check the SearchHybrid 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
-
Navigator
/VisualNavigator
: Declared all delegate properties in NavigatorProtocol
as weak
. - Removed the previously deprecated
MapRepresentable
interface and addMapRepresentable
and removeMapRepresentable
methods from MapView
. Use the MapViewLifecycleDelegate
instead. - Removed the previously deprecated
NavigableLocation.streetName
and NavigableLocation.speedLimitInMetersPerSecond
properties. Use the RoadTextsListener
and SpeedLimit
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. - Removed the previously deprecated
MapLoaderError.duplicateCatalog
. Now MapLoaderError.internalError
is returned in case of a duplicated catalog. - 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. - Removed the previously deprecated
LocationUpdateDelegate
class. LocationDelegate
should be used instead. - Deprecated field
timestamp
in Location
class, please use the newly introduced time
field instead.
Resolved Issues
- Improved guidance user experience: Now incoming locations are discarded if the processing of previous location updates has not yet been completed.
- Fixed: Sometimes, physical road dividers are not considered for offline routing.
- Navigation: Fixed flickering of
LocationIndicator
. - Fixed: Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Fixed:
MapUpdater
: After initial download of a region a newer version is already available for download.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. - Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated
- Navigation: Maneuver voice notifications are sometimes triggered too early.
- 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 markers can be identified by setting a unique Metadata
key to the contained MapMarker
items of a cluster. 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.
Version 4.8.4.0
New Features
- Navigation: Added
distanceType
to SafetyCameraWarning
and TruckRestrictionWarning
. It tells if the event is ahead or was just passed by. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. -
MapUpdater
: After initial download of a region a newer version is already available for download. - Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated
- Navigation: Maneuver voice notifications are sometimes triggered too early.
Version 4.8.3.0
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.
- Offline routing: When using
OfflineRoutingEngine.returnToRoute()
the new route contain now the initial RouteHandle
. - 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. - Navigation: Voice guidance now supports four additional regional languages in India: Bengali, Kannada, Malayalam, and Telugu.
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: Missing language support for
no-NB
and pt-BR
for distant maneuver notifications. - 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. - Voice navigation: For Russian maneuver notifications, the abbreviations and declensions handling has been fixed.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. -
MapUpdater
: After initial download of a region a newer version is already available for download. - Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated
- Navigation: Maneuver voice notifications are sometimes triggered too early.
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. - Navigation: Improved
TruckRestrictionWarning
and SafetyCameraWarning
events. With the new WarningType
you can now get notified if the location of the truck restriction or the safety camera lies ahead or if it was just passed by. - 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.
API Changes
- Deprecated
DynamicRoutingDelegate
which is replaced by the newly introduced DynamicRoutingEngineDelegate
. The delegate is now set with the new DynamicRoutingEngine.start(route, listener)
method which can throw a StartException
if no RouteHandle
was requested for the route. Route calculation errors are propagated via the newly added DynamicRoutingDelegate.onRoutingError()
. Check the Navigation example app for a usage example.
Resolved Issues
-
ReturnToRoute
: Fixed rare cases that could lead to a crash or invalid maneuvers when the feature was used offline. - Corrected the Hindi translation for "yards".
- Navigation: Corrected the Greek translation of the "turn sharp" maneuver notification.
-
ReturnToRoute
during navigation: Fixed possible negative values for maneuver lengths and removed maneuvers with no geometry for cases when returnToRoute
was called multiple times. As a benefit, now a longer part of the original route can be preserved. - Fixed: In rare cases,
Storage.LevelDB
related crashes can occur when starting the app. - Fixed: Voice navigation: The voice announcements for multiple speed cameras that are very close to each other are delivered for both cameras at the same time, so that the first event may be skipped.
- Fixed: Navigation: When using
JunctionViewLaneAssistance
for very long routes then a significant delay can occur before navigation is actually started. Currently, this happens because the entire route is traversed beforehand.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. -
MapUpdater
: After initial download of a region a newer version is already available for download. - Running on a simulator on M1-based Macs only works when no external dependencies / swift packages are integrated
- Navigation: Maneuver voice notifications are sometimes triggered too early.
Version 4.8.1.0
New Features
- Offline Maps: Extended the
MapDownloader
to check for broken maps with getInitialPersistentMapStatus()
. Added also repairPersistentMap()
, so that broken maps can be repaired asynchronously. Check the Developer's Guide or the OfflineMaps example app for a usage example. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. In rare cases, this can lead to missed milestone reached events. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. -
MapUpdater
: After initial download of a region a newer version is already available for download. - 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
- Voice navigation: The voice announcements for multiple speed cameras that are very close to each other are delivered for both cameras at the same time, so that the first event may be skipped.
- Navigation: When using
JunctionViewLaneAssistance
for very long routes then a significant delay can occur before navigation is actually started. Currently, this happens because the entire route is traversed beforehand.
Version 4.8.0.0
New Features
- Truck navigation: Added a listener for
TruckRestrictionWarning
to the Navigator
and VisualNavigator
, which is called at a specific distance while navigating along a route in order to warn about a truck restrictions ahead. It can contain multiple truck restrictions. For now, the following restrictions are possible: WeightRestriction
and DimensionRestriction
. Check the Navigation example app for an usage example. - Lane assistance: Added a
JunctionViewLaneAssistance
listener to Navigator
and VisualNavigator
that informs on the possible lanes and complex junctions.
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. - Changed the
DynamicRoutingEngine
event from etaDifferenceInMinutes
to etaDifferenceInSeconds
.
Resolved Issues
- Navigation: Fixed a problem where intense CPU usage and memory consumption was observed for some routes when an application was listening for
SpeedLimits
.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. -
MapUpdater
: After initial download of a region a newer version is already available for download. - 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
- Voice navigation: The voice announcements for multiple speed cameras that are very close to each other are delivered for both cameras at the same time, so that the first event may be skipped.
Version 4.7.7.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
- 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
. -
MapUpdater
: The current map version of a downloadable region is now exposed. This can be useful for debugging potential map data issues. - Added a new
DynamicRoutingEngine
that allows to periodically request traffic-optimized routes. This can be useful to notify users on better routes while staying in a route planner or during a guidance context when the traffic situation has changed.
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 features for
RoutingEngine
and OfflineRoutingEngine
: - 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. - Fixed: Navigation: In some cases, speed limit data may be missing, although it is available in HERE's database.
-
VisualNavigator
: An issue was fixed, where in a rare conditions map matched positions are temporarily missing between interpolations causing the map to rotate to a wrong direction or to not rotate at all. - The
VisualNavigator
now renders correctly, even if the principal point of the map view was changed by an application.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. -
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. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. -
MapUpdater
: After initial download of a region a newer version is already available for download.
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
- Offline maps: Added
MapUpdater
class that allows to update previously downloaded regions. It also allows to check if one or more updates are available. A usage example can be seen in the OfflineMaps example app. - Improved map rendering performance on low end devices.
- Navigation: Added support for Serbian voice maneuver notifications during guidance.
Resolved Issues
- Fixed: A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - Fixed: Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Fixed: Offline maps: Some downloadable region names are not fully localized yet.
- Fixed: Offline routing: Offline routes cannot be calculated in Japan.
- Offline Maps: A retryable error is not returned via
MapDownloader.onPause()
, instead the download is stopped and must be restarted instead of resumed.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. -
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. - Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets. - Navigation: In some cases, speed limit data may be missing, although it is available in HERE's database.
Version 4.7.5.0
Highlights
- Note: The existing delegate properties for the
Gestures
class and the Navigator
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 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
. - Navigation: Added support for Vietnamese voice maneuver notifications during guidance.
- Navigation: Added a
RoadAttributesListener
that informs on the following new road attributes: isDirtRoad
, isTunnel
, isBridge
, isRamp
, isControlledAccess
, isPrivate
, isNoThrough
, isTollway
, isDividedRoad
, isRightDrivingSide
, isRoundabout
. - Offline routing now also supports
AvoidanceOptions
for rectangular areas. - Offline maps: Added more granular error states to
MapLoaderError
.
Resolved Issues
-
VisualNavigator
: The camera now moves instantly to the initial location when the first Location
update is received.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. -
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. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline routing: For
RouteOptions
: AvoidanceOptions.countries
are currently ignored. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets. - Offline Maps: A retryable error is not returned via
MapDownloader.onPause()
, instead the download is stopped and must be restarted instead of resumed. - Navigation: In some cases, speed limit data may be missing, although it is available in HERE's database.
Version 4.7.4.0
Highlights
- Note: The existing delegate properties for the
Gestures
class and the Navigator
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.
- Positioning: Background location updates are no longer enabled by default. They need to be enabled via
LocationEngineBase.setBackgroundLocationAllowed()
. On top, the device needs to require the needed permissions. - Offline maps: Added
ALREADY_INSTALLED
enum value to MapLoaderError
. Now, downloading an existing map region will result in ALREADY_INSTALLED
error instead of getting a SUCCESS
. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. -
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. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline routing: For
RouteOptions
: AvoidanceOptions.avoidAreas
and AvoidanceOptions.countries
are currently ignored. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets. - Offline Maps: A retryable error is not returned via
MapDownloader.onPause()
, instead the download is stopped and must be restarted instead of resumed.
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)
.
API Changes
- Navigation: Deprecated the
LaneAssistance
class and the related Navigator.laneAssistanceDelegate
property. Use the newly introduced ManeuverViewLaneAssistance
class and the Navigator.maneuverViewLaneAssistanceDelegate
instead.
Resolved Issues
- Fixed: Offline routing -
RouteOptions
are currently ignored completely and only default values will be used. - Fixed:
ReturnToRouteEngine
: The guidance maneuver at the merging point between the new route and the old route is not properly generated.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. -
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. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Offline routing: For
RouteOptions
: AvoidanceOptions.avoidAreas
and AvoidanceOptions.countries
are currently ignored. - 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. - Offline maps: Added
MapDownloader.clearPersistentMapStorage()
to clear the persistent storage to remove all downloaded map data. - Simplified usage of special speed limits: Now the lowest current special speed limit is optionally exposed via
effectiveSpeedLimitInMetersPerSecond()
. It's no longer necessary to set a Date()
, the HERE SDK handles this now internally based on the device's clock settings. The related APIs (TimeDomain
, SpecialSpeedSituationType
, SpecialSpeedSituation
) have been deprecated. Added the following new fields to the SpeedLimit
class: advisorySpeedLimitInMetersPerSecond: Double?
snowSpeedLimitInMetersPerSecond: Double?
rainSpeedLimitInMetersPerSecond: Double?
fogSpeedLimitInMetersPerSecond: Double?
schoolZoneSpeedLimitInMetersPerSecond: Double?
timeDependentSpeedLimitInMetersPerSecond: Double?
API Changes
-
MapDownloader
: Added new pause / resume events to DownloadRegionsStatusListener
to know when a download of a region or a list of regions was paused or resumed. Introduced these two new methods: onPause(error: MapLoaderError?) -> Void
and void onResume()
. The error is populated when the download was paused by the MapDownloader
due to a retryable error. -
VisualNavigator
rendering is, by default, smooth again with a target frame rate set to 60 FPS. This can be adjusted for low end devices. See the frameRate
setting for MapView
.
Resolved Issues
- Fixed:
MapMarker3D
instances are only partly rendered when the camera is positioned too far from earth. - Fixed: Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. -
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. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
ReturnToRouteEngine
: The guidance maneuver at the merging point between the new route and the old route is not properly generated.
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. - Introduced customizable visual navigation. Added
CameraSettings
that can be set for VisualNavigator
. You can specify cameraDistanceInMeters
to define the distance to earth, the cameraTiltInDegrees
to specify the 3D effect (a value of 0 switches to a flat 2D view) and cameraBearingInDegrees
which can be set to null
to rotate the map into the travel direction (any other value will stop the rotation - for example, set it to 0 to enable north up mode). By default, rotations are enabled.
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. - Fixed: Starting
LocationEngine
on iOS devices fails when the device is in flight mode.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. -
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. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
ReturnToRouteEngine
: The guidance maneuver at the merging point between the new route and the old route is not properly generated.
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. - Added a new
MapScene.Layers.vehicleRestrictions
layer. It can be activated with MapScene.setLayerState()
and it shows the current vehicle restrictions on the map. For example, weight or height restrictions for trucks at bridges.
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)
. - Speed limits: Made
SpecialSpeedSituation.specialSpeedLimitInMetersPerSecond
non-optional and removed the enum items speedBumpsPresent
and laneDependent
from SpecialSpeedSituationType
, because they do not contain a special speed limit. - Added a new
RoadTextsListener
to get notified on the current road name. - Deprecated
NavigableLocation.streetName
. Use the newly introduced RoadTextsListener
instead. - Removed the previously deprecated
UnitSystem.imperial
enum item. - 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: During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Fixed: Offline maps:
Region.sizeOnDiskInBytes
is 0 for any Region
. - Fixed: The opening hours for a
Place
that closes after midnight end at midnight. - Fixed: Navigation: Maneuver arrows are not rendered correctly for offline routes.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - 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.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
ReturnToRouteEngine
: The guidance maneuver at the merging point between the new route and the old route is not properly generated. - 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.
- Navigation: Added an API to notify users about changes of the current speed limit. Now a
SpeedLimitListener
can be set that allows to get the SpeedLimit
as before, but optionally it may also contain information on SpecialSpeedSituation
events that overrule the default speed limit. Reasons for this are defined in the SpecialSpeedSituationType
enum. A TimeDomain
value informs whether this speed limit is currently active or not. - Navigation: Added a new
ReturnToRouteEngine
that allows the calculate a new route when a deviation from the original route was detected. This engine works offline on already downloaded or cached map data. - Introduced new
SDKCache
class and SDKCacheCallback
that allows to clear the temporarily downloaded map data via the new clearCache()
method. Note: This will not delete downloaded offline maps data. - Offline Search: Added new
OfflineSearchEngine.search()
method that accepts PlaceIdQuery
and an optional LanguageCode
to lookup a Place ID.
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. - Navigation: Deprecated
NavigableLocation.speedLimitInMetersPerSecond
. Use the newly introduced SpeedLimit
instead.
Resolved Issues
- Fixed: Offline maps: The new method to get installed regions may result in an error. As a workaround get available map regions beforehand and try again.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Offline maps:
Region.sizeOnDiskInBytes
is 0 for any Region
. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- 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. - Navigation: Maneuver arrows are not rendered correctly for offline routes.
-
ReturnToRouteEngine
: The guidance maneuver at the merging point between the new route and the old route is not properly generated.
Version 4.6.4.0
New Features
- Offline maps: It's now possible to pause and resume pending downloads of a map region via the
MapDownloaderTask
's pause()
and resume()
methods. - Navigation: Maneuver arrows are now rendered by default on the route shown on the map by the
VisualNavigator
. The next maneuver is shown, and removed once reached. - Navigation: The turn-by-turn
ManeuverAction
for roundabouts is now split into 'roundaboutEnter' and 'roundaboutExit'. The behavior for the HERE SDK remains the same. An additional 'LEFT/RIGHT_TURN' action may be given when exiting a larger roundabout. - 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. - Navigation: Safety speed camera warner text notifications were always fired. Now, text notifications are only sent via
ManeuverNotificationListener
if a SafetyCameraWarningListener
is set.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Offline maps:
Region.sizeOnDiskInBytes
is 0 for any Region
. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline maps: The new method to get installed regions may result in an error. As a workaround get available map regions beforehand and try again.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Offline routing: Offline routes cannot be calculated in Japan.
- 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. - Navigation: Maneuver arrows are not rendered correctly for offline routes.
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. - Positioning: The
kCLAuthorizationStatusNotDetermined
status from iOS platform is now treated as LocationEngineStatus.missingPermissions
. This status may be sent to listeners when the start()
method of the LocationEngine
is called. So now applications are not enforced to check the platform authorization status before starting to locate. -
MapDownloader
: Added possibility to delete downloaded map regions via the new deleteRegions()
method that accepts a list of RegionId
elements that should be deleted asynchronously. -
MapDownloader
: Added InstalledRegion
class that holds information on installed regions. Added getInstalledRegions()
method to get the new class.
Resolved Issues
- Fixed: Currently, a
Lane
that is reserved for bus or bicycle does not contain a direction type. - Fixed: Navigation: Unlimited speed limits may not always be reported as expected.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Offline maps:
Region.sizeOnDiskInBytes
is 0 for any Region
. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline maps: Some downloadable region names are not fully localized yet.
- Offline maps: The new method to get installed regions may result in an error. As a workaround get available map regions beforehand and try again.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - 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
Highlights
- Added a new Indoor Routing API (beta) which allows calculating routes inside private venues. The API supports routes from outside to a position inside a venue and from a position inside a venue to the outside. The API also allows showing the resulting routes on the map.
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 }
. -
VisualNavigator
: The visibility of a Route
can be controlled with isRouteVisible: Bool { get set }
. By default, if a route is set, it will be rendered when startRendering()
is called, and removed with stopRendering()
. It is possible to set or remove a route at any time, i.e., before or after calling startRendering()
, and the route in the MapView
will be updated accordingly.
API Changes
- The free flow traffic layer is now rendering green traffic flow lines by default.
-
MapLoader
: Deprecated the meaningless error MapLoaderError.duplicateCatalog
. -
VisualNavigator
introduced a behavioral change: The transform center (also known as principal point) of the MapCamera
is automatically adjusted during navigation for better viewing results. Calling startRendering()
changes the principalPoint
property of the MapCamera
so that the current position indicator is placed slightly at the bottom of the MapView
. It is restored to its original value when stopRendering()
is called.
Resolved Issues
- Fixed: When traffic flows are enabled, map gestures may behave slower than expected.
- Fixed: Currently, a
Lane
that is reserved for bus or bicycle does not contain a direction type. - Fixed: Offline routing: Avoidance options are currently ignored.
- Fixed: Offline routing: Ferry links are not extracted to separate sections.
- Fixed: Navigation: Safety camera notifications may come too often.
- Fixed: When
SDKOptions
is created before initialization of SDKNativeEngine
it may contain a corrupted path.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Currently, a
Lane
that is reserved for bus or bicycle does not contain a direction type. - Offline maps:
Region.sizeOnDiskInBytes
is 0 for any Region
. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Navigation: Unlimited speed limits may not always be reported as expected.
- 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. - Navigation: Added a
PostActionDelegate
protocol, which is accessible from Navigator
and VisualNavigator
from postActionDelegate
property. - Navigation: The
exitSignTexts
(road exit number) attribute was added to Maneuver
. - Lane Assistance: The following new access types have been added:
automobiles
, buses
, taxis
, carpools
, pedestrians
, trucks
, throughTraffic
, deliveryVehicles
, emergencyVehicles
, motorcycles
. - Positioning: Added new fields to
Location
object: bearingAccuracyInDegrees
, speedAccuracyInMetersPerSecond
, timestampSinceBootInMilliseconds
. Related constructors have been deprecated. Use the related newly introduced constructors instead.
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
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Currently, a
Lane
that is reserved for bus or bicycle does not contain a direction type. - Offline maps:
Region.sizeOnDiskInBytes
is 0 for any Region
. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline routing: Pedestrian, truck, scooter, and EV routing are not expected to work.
- Offline routing: Avoidance options are currently ignored.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing: Ferry links are not extracted to separate sections.
- Offline routing:
RouteOptions
are currently ignored completely and only default values will be used. - Offline routing:
Maneuver
information is not available. A maneuver will only contain empty strings or default values. During guidance, maneuver data should be taken from Navigator
instead. - Navigation: Unlimited speed limits may not always be reported as expected.
- Navigation: Safety camera notifications may come too often.
- When
SDKOptions
is created before initialization of SDKNativeEngine
it may contain a corrupted path.
Version 4.6.0.0
Highlights
- Added support for offline maps. Map data can now be preloaded for continents and countries worldwide. Note: This feature is released as beta feature. Added the
MapDownloader
class to download the list of available regions and to download the regions. Added related classes: -
DownloadableRegionsCallback
: Notifies when regions are downloaded. -
MapDownloaderStatusListener
: Notifies on the status of the download. -
MapDownloaderTask
: Task to cancel downloads. -
MapLoaderError
: Enumeration for specifying various errors. -
Region
: Represents an area that can be downloaded. -
RegionId
: Specifies an unique identifier for a Region
.
- Added
OfflineRoutingEngine
to calculate routes on cached or preloaded offline maps: It is now possible to calculate routes without connectivity. The engine adheres to the same protocol as its online counterpart. - 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. - The
SDKNativeEngine
now locks access to the map data cache and persistent storage directories. When another instance of SDKNativeEngine
is instantiated with the same access key id then now an exception is thrown. - Road shields are now rendered by default on the map view.
-
Navigator
and VisualNavigator
now allow to specify a TransportMode
for tracking. By default, car mode is used. - Search: An unused
TaskHandle
returned for online and offline search engines can now be omitted instead of excluding it with _ = ...
. - Added
SafetyCameraType
to provide notifications about safety speed cameras both when on route and when in tracking mode. In tracking mode, the safety camera notifications will be given only for the portion of a road between the current position and the first junction. Added SafetyCameraWarning
to provide information about the distance from the current position to the camera, the speed limit observed by the camera and the type of the safety camera. Added a dedicated delegate that can be set to Navigator
or VisualNavigator
. - Lane Assistance: Added new types to
LaneType
: Express lane, acceleration lane, deceleration lane, auxiliary lane, slow lane, passing lane, shoulder lane, regulated lane access, turn lane, center turn lane, truck parking lanes, parking lanes, variable driving lanes, bicycle lanes.
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.
-
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
. - HERE Positioning now runs in it's own thread instead of separate process.
Resolved Issues
- Fixed: A
MapPolyline
may be unexpectedly rendered over a MapMarker
.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Currently, a
Lane
that is reserved for bus or bicycle does not contain a direction type. - Offline maps:
Region.sizeOnDiskInBytes
is 0 for any Region
. - Offline maps: Once any download for a
Region
fails or is cancelled, all already downloaded regions will be deleted as well. - Offline routing: Pedestrian, truck, scooter, and EV routing are not expected to work.
- Offline routing: Avoidance options are currently ignored.
- Offline routing: The public maneuver list in the route's sections are empty. During navigation, the maneuvers are provided as usual.
- Offline routing: Ferry links are not extracted to separate sections.
- Navigation: Unlimited speed limits may not always be reported as expected.
- Navigation: Safety camera notifications may come too often.
- 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 during turn-by-turn navigation 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. - Added new API methods to
LocationEngine
to control background positioning and battery saving options: - set/get
backgroundLocationAllowed(boolean)
: Enables or disables an application's background location updates. By default, background location updates are enabled if a application has background location capabilities. - set/get
backgroundLocationIndicatorVisible(boolean)
: Controls the visibility of a device's background location indicator. By default, the native background location indicator is visible, if an application has background location capabilities. - set/get
pauseLocationUpdatesAutomatically(boolean)
: Controls automatic pausing of location updates, for example, for improving the device's battery life at times when location data is unlikely to change. By default, automatic pausing of location updates is allowed.
API Changes
- Changed
PedestrianOptions(routeOptions, textOptions)
constructor to PedestrianOptions(routeOptions, textOptions, 1.0)
to support the new PedestrianOptions.walkSpeedInMetersPerSecond
property (see above).
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Currently, a
Lane
that is reserved for bus or bicycle does not contain a direction type. Nevertheless, such a lane is included in the list of lanes. However, the lane type is not exposed yet. Therefore, it is recommended to omit lanes that do not contain at least one direction. - 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.
API Changes
- The lane assistance API was marked as BETA until further notice and thus there can be bugs and unexpected behavior. The API may change for new releases without a deprecation process.
- The lane list order was changed to always start with index 0 from the leftmost lane to the rightmost lane (last index). Currently, left-hand driving countries are not supported.
Known Issues
- The
VisualNavigator
API is in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early before roundabouts.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Currently, a
Lane
that is reserved for bus or bicycle does not contain a direction type. Nevertheless, such a lane is included in the list of lanes. However, the lane type is not exposed yet. Therefore, it is recommended to omit lanes that do not contain at least one direction. - 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. - Introduced a new lane assistance API to notify drivers during navigation which lane is recommended to reach the next maneuvers. Use the new
LaneAsssistanceDelegate
to receive LaneAssistance
events that are fired along with each voice announcement.
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.
- Fixed: During guidance tracking mode, roads with unlimited speed are now correctly reported.
Known Issues
- The new
VisualNavigator
and the new lane assistance API are in an early development stage. More features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - 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.
- A new
VisualNavigator
class has been introduced. It contains the same functionality as the Navigator
class, but offers support for a visual guidance experience. With startRendering()
a 3D location marker is added that smoothly follows the current location on the map. The animation is interpolated. In addition, the MapOrientation
is updated. When a Route
is set, the camera automatically follows the direction arrow. With the new CameraTrackingMode
, this can be turned off, for example, to let the user freely pan the map. When tracking is turned off, the direction arrow moves on, but the map is not moved. Once CameraTrackingMode
is enabled again, the camera follows again the current location. Note that the Navigator
class can be replaced by the VisualNavigator
class without any further code adaptation as Navigator
shares the same method signatures with the new VisualNavigator
.
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
- The new
VisualNavigator
is in an early development stage. More rendering features and overall stabilization are planned for the next releases. Because of the pandemic situation full test coverage is currently blocked. - 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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - 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
- Switched to a more performant underlying map format that provides less size, less traffic and smaller download times. This new format does not require any adaptation on app side.
- Added a new
OfflineSearchEngine
that works without internet connectivity upon previously cached maps. It supports key word search, category search, geocoding and reverse geocoding. For example, when no internet connection is available, an app may try to fallback to the OfflineSearchEngine
to provide instant results - although connectivity is be temporarily lost. - 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 in
Navigator
a static method to query the list of available languages for maneuver notifications: List<LanguageCode> Navigator.availableLanguagesForManeuverNotifications()
. - 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.
- Deprecated the
LocationProvider
protocol and the Navigator
constructors that accept a LocationProvider
as parameter. A Navigator
can now be construced from an empty constructor. - A
Navigator
now conforms to the LocationDelegate
protocol. - Deprecated
onLocationTimeout()
of LocationDelegate
- it is no longer needed and the necessary timeout handling is now done internally inside the Navigator
implementation. - 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. - Deprecated in
Navigator
the method List<LanguageCode> supportedLanguages()
, use List<LanguageCode> Navigator.availableLanguagesForManeuverNotifications()
instead.
Resolved Issues
- Fixed: After orientation changes coordinate conversions may return incorrect values.
- Fixed: During navigation sometimes the
nextRoadName
or nextRoadNumber
are not available when the name of the street/road is a route number. In such a case, the next Maneuver
indicates an 'unknown road'. - Fixed: When imperial unit system is selected along with 'EN US' language code, then
RouteTextOptions
returns 'ft' as unit, but voice guidance uses 'yards'. - Fixed: For some regions the speed limit value can be unexpectedly
null
on highways. Roads with no speed limit are now correctly indiciated during navigation. - Fixed: During navigation, tunnel extrapolation may not work as expected.
- 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. - Fixed issues for map matching with no or unstable heading information. During navigation, map matching now works even when no heading information is provided or when the speed is very low.
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. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Starting
LocationEngine
on iOS devices fails when the device is in flight mode. - 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.
Resolved Issues
- Fixed: During navigation it can happen in rare cases that the distance to the next maneuver is slightly wrong.
- Fixed: Random route recalculations occur during drive navigation, especially on crossroads.
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.
- During navigation sometimes the
nextRoadName
or nextRoadNumber
are not available when the name of the street/road is a route number. In such a case, the next Maneuver
indicates an 'unknown road'. - When imperial unit system is selected along with 'EN US' language code, then
RouteTextOptions
returns 'ft' as unit, but voice guidance uses 'yards'. - For some regions the speed limit value can be unexpectedly
null
on highways. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - During navigation, tunnel extrapolation may not work as expected.
- 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. - During navigation sometimes the next maneuver and voice instructions are triggered too early.
- 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: For routes with more than two waypoints the destination reached event may be called too early.
- Fixed: In rare cases map tiles may flicker when a device is offline and the cache is used.
- Fixed: During navigation, voice commands are sometimes missing or inaccurate.
- Fixed issues with map-matched locations during turn-by-turn navigation when driving with slow speed.
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. - Random route recalculations may occur during drive navigation, especially on crossroads.
- After orientation changes coordinate conversions may return incorrect values.
- During navigation sometimes the
nextRoadName
or nextRoadNumber
are not available when the name of the street/road is a route number. In such a case, the next Maneuver
indicates an 'unknown road'. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- When imperial unit system is selected along with 'EN US' language code, then
RouteTextOptions
returns 'ft' as unit, but voice guidance uses 'yards'. - During navigation it can happen in rare cases that the distance to the next maneuver is slightly wrong.
- For some regions the speed limit value can be unexpectedly
null
on highways. - During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
. - During navigation, tunnel extrapolation may not work as expected.
- 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 an issue with wrong left and right voice commands during navigation.
- 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. - Random route recalculations may occur during drive navigation, especially on crossroads.
- After orientation changes coordinate conversions may return incorrect values.
- During navigation sometimes the
nextRoadName
or nextRoadNumber
are not available when the name of the street/road is a route number. In such a case, the next Maneuver
indicates an 'unknown road'. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- For routes with more than two waypoints the destination reached event may be called too early.
- When imperial unit system is selected along with 'EN US' language code, then
RouteTextOptions
returns 'ft' as unit, but voice guidance uses 'yards'. - During navigation it can happen in rare cases that the distance to the next maneuver is slightly wrong.
- In rare cases map tiles may flicker when a device is offline and the cache is used.
- For some regions the speed limit value can be unexpectedly
null
on highways. - During navigation, voice commands are sometimes missing or inaccurate.
- During navigation, the number of sections within
RouteProgress
may not match the number of sections
within the Route
.
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: During navigation sometimes a
Manuever
does not contain all expected fields. - 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. - Random route recalculations may occur during drive navigation, especially on crossroads.
- After orientation changes coordinate conversions may return incorrect values.
- During navigation sometimes the
nextRoadName
or nextRoadNumber
are not available when the name of the street/road is a route number. In such a case, the next Maneuver
indicates an 'unknown road'. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- For routes with more than two waypoints the destination reached event may be called too early.
- When imperial unit system is selected along with 'EN US' language code, then
RouteTextOptions
returns 'ft' as unit, but voice guidance uses 'yards'. - During navigation it can happen in rare cases that the distance to the next maneuver is slightly wrong.
- In rare cases map tiles may flicker when a device is offline.
Version 4.4.2.0
Highlights
- Integrated HERE Positioning. The new
LocationEngine
implements a comprehensive location solution that works with several location sources such as GPS or other Global Navigation Satellite System (GNSS) receivers, mobile network signals and Wi-Fi network signals to determine accurate locations. Along with it, we provide a new ConsentEngine
to optionally enable data collection to improve HERE services.
New Features
- Added a new
NavigatorProtocol
which describes the main turn-by-turn functionality of a Navigator
. - 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. - Random route recalculations may occur during drive navigation, especially on crossroads.
- 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. - During navigation sometimes the
nextRoadName
or nextRoadNumber
are not available when the name of the street/road is a route number. In such a case, the next Maneuver
indicates an 'unknown road'. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- For routes with more than two waypoints the destination reached event may be called too early.
- When imperial unit system is selected along with 'EN US' language code, then
RouteTextOptions
returns 'ft' as unit, but voice guidance uses 'yards'. - During navigation sometimes a
Manuever
does not contain all expected fields. - During navigation it can happen in rare cases that the distance to the next maneuver is slightly wrong.
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.
Resolved Issues
- Fixed: Voice instructions are sometimes not properly synchronised with the current map-matched location.
- Fixed: During turn-by-turn navigation, a
NavigableLocation
may not contain map-matched geographic coordinates for some regions due to data issues.
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. - Random route recalculations may occur during drive navigation, especially on crossroads.
- 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. - During navigation sometimes the
nextRoadName
or nextRoadNumber
are not available when the name of the street/road is a route number. In such a case, the next Maneuver
indicates an 'unknown road'. - 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
. - Support for interactive private venues has been introduced. This feature is available for building owners upon request.
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. - Random route recalculations may occur during drive navigation, especially on crossroads.
- Voice instructions are sometimes not properly synchronised with the current map-matched location.
- After orientation changes coordinate conversions may return incorrect values.
- 3d marker is not aligned with the road when using the map matched position.
- During turn-by-turn navigation, a
NavigableLocation
may not contain map-matched geographic coordinates for some regions due to data issues. - 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
Highlights
- To enhance TBT Navigation, we added a
MilestoneReachedDelegate
that informs whenever a stopover has been passed. See the related feature description with more details below. - During TBT navigation a new
SpeedWarningDelegate
informs whenever the user is exceeding the current speed limits on the road. See the related feature description with more details below.
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
. - Added the
Milestone
class with the following fields: -
sectionIndex: Int32
for the index of the section on the route that has been completed. -
waypointIndex: Int32?
which corresponds to the waypoint in the original user-defined waypoint list. -
originalCoordinates: GeoCoordinates?
for user-defined geographic coordinates. -
mapMatchedCoordinates: GeoCoordinates
for map-matched geographic coordinates.
- Added the
MilestoneReachedDelegate
protocol to receive notifications about the arrival at each Milestone
, and the method: void onMilestoneReached(_ milestone: Milestone)
called when a milestone has been reached. - Added the
DestinationReachedDelegate
protocol to receive notifications about the arrival at the destination, and the method: void onDestinationReached()
called when the destination has been reached. - Added the following methods to the
Navigator
class: -
milestoneReachedDelegate: MilestoneReachedDelegate?
for the delegate that notifies when a Milestone
has been reached. -
destinationReachedDelegate: DestinationReachedDelegate?
for the delegate that notifies when a destination has been reached.
- Added the
SpeedWarningDelegate
protocol to receive notifications from the Navigator
about the speed limit being exceeded with the following method: -
onSpeedWarningStatusChanged(_ status: SpeedWarningStatus)
called whenever the status of the speed warning status has changed to any of the SpeedWarningStatus
values.
- Added the
SpeedWarningStatus
enumeration that represents the speed warning status. - Added the
SpeedLimitOffset
struct that indicates the offset to be used above a specific speed to be notified of the speed limit being exceeded, with the following fields: -
lowSpeedOffsetInMetersPerSecond: Double
for the speed limit offset for low speeds. -
highSpeedOffsetInMetersPerSecond: Double
for the speed limit offset for high speeds. -
highSpeedBoundaryInMetersPerSecond: Double
for the high speed boundary.
- Added the
SpeedWarningOptions
struct that contains all options to be used for speed limit warnings, with the following field: -
speedLimitOffset: SpeedLimitOffset
for the speed limit offset to be used when notifying that the speed limit has been exceeded.
- Added the following properties to the
Navigator
class: -
speedWarningListener: SpeedWarningDelegate?
for the delegate to be notified of the speed limit being exceeded or back to normal. -
speedWarningOptions: SpeedWarningOptions
for the speed warning options.
Resolved Issues
- Fixed: Startup performance for navigation is very slow on certain devices. Now, startup performance for navigation has been improved for all devices.
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. - Random route recalculations may occur during drive navigation, especially on crossroads.
- Voice instructions are sometimes not properly synchronised with the current map-matched location.
- 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.
- Fixed: Heading is ignored during turn-by-turn navigation. Now, Waypoint heading is considered during turn-by-turn navigation.
- Fixed: Creating a very long route crashes the app. Now, route is created and navigation starts irrespective of how long the route is.
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. - Startup performance for navigation is very slow on certain devices.
- Random route recalculations may occur during drive navigation, especially on crossroads.
- Voice instructions are sometimes not properly synchronised with the current map-matched location.
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
GPXDocument
class to create a GPX document and to load a GPX file. - Added the
GPXTrack
class to represent a single track from a GPXDocument
. - Added the constructor
LocationSimulator(gpxTrack: options:)
to specify the GPX track to travel and the options to specify how the location simulator will behave. - 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
].
Deprecated
- Deprecated the property
RouteProgress.currentManeuverIndex
. Use the RouteProgress.maneuverProgress
property instead. - Deprecated the property
RouteProgress.currentManeuverRemainingDistanceInMeters
. Use the RouteProgress.maneuverProgress
property instead.
Resolved Issues
- Fixed: Calling
navigator.supportedLanguages()
before a route is set will no longer result in an empty list. - 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
-
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. - Creating a very long route crashes the app.
- Heading is currently ignored during turn-by-turn navigation.
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
. - Added
MapMatchedLocation
class with public fields: -
GeoCoordinates coordinates
for the geographic coordinates of the map-matched location. -
Double bearingInDegrees
for the map-matched device's horizontal direction of travel.
- Added the supported language functionality with the method
Navigator.supportedLanguages()
. - Added the
Navigator.maneuverNotificationOptions
property for maneuver notification options.
API Changes
- Renamed
CurrentLocation.rawLocation
to originalLocation
. - Changed
CurrentLocation.mapMatchedLocation
type from Location
to MapMatchedLocation
. - Renamed
CurrentLocation
to NavigableLocation
. - Renamed
CurrentLocationDelegate
to NavigableLocationDelegate
. - Renamed
Navigator.currentLocationDelegate
to Navigation.navigableLocationDelegate
. - Changed
RouteDeviation.lastLocationOnRoute
type from Location
to NavigableLocation
.
Resolved Issues
- Fixed:
AvoidanceOptions
will be ignored when calculating truck routes. Now, AvoidanceOptions
are considered when calculating truck routes.
Known Issues
-
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. - Calling
navigator.supportedLanguages()
before a route is set will result in an empty list.
Version 4.3.0.0
Highlights
- This is the initial release.
Known Issues
-
SearchEngine
: Place.Id
is empty for reverse geocoding results. -
AvoidanceOptions
will be ignored when calculating truck routes. - Transparency for
MapPolylines
is not supported.