Release Notes
We are pleased to announce the availability of version 4.12.10.0 (Explore Edition) of the new HERE SDK for Flutter.
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.12.10.0
New Features
- This version of the HERE SDK is delivered with map data version 57.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, on some newer devices running Android 12 or higher, fast changes of the device orientation can lead to render problems. This is a known Flutter issue tracked here.
Changes from Previous Releases
This section documents major changes from past releases. We encourage you to use the latest release, 4.12.10.0.
Version 4.12.9.0
New Features
- Added bulk operation support for
MapPolylines
: Multiple lines can now be added / removed with addMapPolylines(List<MapPolyline> mapPolylines)
and removeMapPolylines(List<MapPolyline> mapPolylines)
. -
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
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
sdkEngineAlreadyDisposed
to InstantiationErrorCode
enum to indicate that SDKNativeEngine.dispose()
was already called.
API Changes - Breaking
-
MapPolyline
: Removed the beta feature AlphaBlendType
enum and the related property.
API Changes - Deprecations
-
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.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, on some newer devices running Android 12 or higher, fast changes of the device orientation can lead to render problems. This is a known Flutter issue tracked here.
- The classes
MapSurfaceHost.kt
, MapViewHost.kt
and MapViewHost.swift
are only meant for internal use until further notice.
Version 4.12.8.0
New Features
- The
HereMap
on Android now allows to use the Hybrid Composition mode. By default, the Virtual Display mode is still used. We expect, that in the future, the Hybrid Composition mode will become the default mode. In order to use the Hybrid Composition mode for native views, set the new optional constructor parameter mode
when creating a HereMap
like this: HereMap(mode: NativeViewMode.hybridComposition, ...)
. The Hybrid Composition mode is recommended for devices running Android 12 or higher. Note that it can cause performance impacts on lower Android versions. More information about Hybrid Composition and Virtual Display modes can be found here. - 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 static MapPolylineAnimation
class to represent an animation that can be applied to a MapPolyline
object. Added startAnimation(MapPolylineAnimation animation, AnimationListener listener)
to MapPolyline
to start an animation. Added cancelAnimation(MapPolylineAnimation animation)
to MapPolyline
to cancel an animation. Added MapItemKeyFrameTrack polylineProgress(List<ScalarKeyframe> keyframes, EasingFunction easingFunction, KeyframeInterpolationMode interpolationMode)
to create a keyframe track for the progress property of a 'MapPolyline'.
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.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, on some newer devices running Android 12 or higher, fast changes of the device orientation can lead to render problems. This is a known Flutter issue tracked here.
Version 4.12.7.0
New Features
- Flutter 3.3.2 is now fully supported. Note that an upgrade to this version is required in order to use this release of the HERE SDK. The HERE SDK will support only this Flutter version until further notice. Higher versions may also work, but are not guaranteed to work. Flutter 2.10.5 is no longer supported. Along with Flutter 3.3.2, also the supported Dart version was increased from 2.16.2 to 2.18.1. The HERE SDK plugin for iOS is now compiled with Xcode 13.2.1.
-
SearchEngine
: Added connectorTypeId
to EVChargingStation
. More information on the IDs and the corresponding type can be found here. - Added
HereMapController.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
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.
- The newly introduced
SDKNativeEngine.makeSharedInstance()
feature we have released with HERE SDK 4.12.1.0 is now fully workable. As a result, it is now possible to switch to the new way to manually initialize the HERE SDK to avoid auto-initialization - as described in the Developer's Guide. All accompanying example apps show the new initialization approach.
Resolved Issues
-
MapPolyline
instances no longer interprete an alpha color setting of 0.0 as fully opaque.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.12.6.0
New Features
- 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. - 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.
Resolved Issues
-
RoutingEngine
: The importRoute()
feature via a list of Locations
can be used now as expected. -
MapPolyline
instances no longer ignore alpha color settings.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Since HERE SDK 4.12.1.0, the newly introduced
SDKNativeEngine.makeSharedInstance()
feature is not workable yet. As a result, it is not possible yet to switch to the new way to manually initialize the HERE SDK to avoid auto-initialization - as described in the Developer's Guide. All example apps still show the old initialization. - 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. - Currently, Flutter 3.x is not yet supported due to a known issue with platform views. For an upcoming release, we are planning to integrate Flutter 3.3.2 that contains a possible fix for this problem. Once the HERE SDK supports Flutter 3.3.2, an upgrade to this version is required in order to use this version of the HERE SDK. Note that the HERE SDK will then only support one Flutter version until further notice. The currently supported minimum and latest Flutter version will be no longer compatible.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
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). -
SearchEngine
: Added the property Details.fuelStation
that contains fuel station attributes. Added struct sdk.search.FuelStation
,sdk.search.FuelAdditive
, sdk.search.GenericFuel
, sdk.search.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.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Since HERE SDK 4.12.1.0, the newly introduced
SDKNativeEngine.makeSharedInstance()
feature is not workable yet. As a result, it is not possible yet to switch to the new way to manually initialize the HERE SDK to avoid auto-initialization - as described in the Developer's Guide. All example apps still show the old initialization. - 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. - Currently, Flutter 3.0 is not yet supported due to a known issue with platform views. We are planning to integrate a possible fix for the Flutter engine. Once the HERE SDK supports Flutter 3.3.2 an upgrade to Flutter 3.3.2 is required. The currently supported minimum and latest Flutter version will be no longer compatible.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.12.4.0
New Features
- 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
. - Added
EVChargingStation.hasFixedCable
field to know if a charging station for electric vehicles supports fixed cables.
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. -
RoutingEngine
: Fixed missing toll information for bus or taxi online routes.
Known Issues
- Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - Since HERE SDK 4.12.1.0, the newly introduced
SDKNativeEngine.makeSharedInstance()
feature is not workable yet. As a result, it is not possible yet to switch to the new way to manually initialize the HERE SDK to avoid auto-initialization - as described in the Developer's Guide. All example apps still show the old initialization. - 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. - Currently, Flutter 3.0 is not yet supported due to a known issue with platform views. We are planning to integrate a possible fix for the Flutter engine. Once the HERE SDK supports Flutter 3.x an upgrade to Flutter 3.x is required. The currently supported minimum and latest Flutter version will be no longer compatible.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
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 map_items_app
example. Note that this is a beta release of this feature. - The latest supported Flutter version was raised from 2.10.2. to 2.10.5. The latest supported Dart version was raised from 2.16.1. to 2.16.2. - note that Flutter 3.x is not yet supported and cannot be used. The minimum supported Flutter and Dart versions have not been changed.
- Added
CategoryQuery.includeChains
and CategoryQuery.excludeChains
that support search filtering by chains. - 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.
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.
API Changes - Deprecations
- Deprecated
TextQuery.includeChains
and TextQuery.excludeChains
. Please use CategoryQuery.includeChains
and CategoryQuery.excludeChains
instead.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Currently, Flutter 3.0 is not yet supported due to a known issue with platform views. We are planning to integrate a possible fix for the Flutter engine. Once the HERE SDK supports Flutter 3.x an upgrade to Flutter 3.x is required. The currently supported minimum and latest Flutter version will be no longer compatible.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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. -
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.
Version 4.12.2.0
New Features
- Search
Details
now contain EVChargingStationAttributes
- if applicable for a Place
.
API Changes - Breaking
- Removed
connectorTypeId
from the search type EVChargingStation
. The API is still in beta state.
Resolved Issues
-
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
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Currently, Flutter 3.0 is not yet supported due to a known issue with platform views. We are awaiting a possible fix for the Flutter engine.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
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 void enableFeatures(Map<String, String> features)
. Hide a layer via void disableFeatures(List<String> features)
. Query supported map features via Map<String, List<String>> getSupportedFeatures()
and check currently active map features with Map<String, String> getActiveFeatures()
. Note that this is a beta release of this feature. - 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 AndroidManifest
or 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.
API Changes - Deprecations
- In rare cases an application using the HERE SDK may crash due to a
Storage.LevelDB
error or the initialization of the HERE SDK may fail with a failedToLockCacheFolder
error. Added the class 'LockingProcess' and related functionality to prevent such crashes. - 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
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Currently, Flutter 3.0 is not yet supported due to a known issue with platform views. We are awaiting a possible fix for the Flutter engine.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
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(String layerName, MapSceneLayerState newState)
. Use MapScene.setLayerVisibility(...)
instead. Removed previously deprecated enum MapSceneLayerState
, use VisibilityState
instead. - Removed the previously deprecated
MapCamera.animateToAreaWithGeoOrientationAndViewRectangle(GeoBox target, GeoOrientationUpdate orientation, Rectangle2D viewRectangle, int durationInMs)
method. Use one of the other available methods 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.
- 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.
API Changes - Deprecations
- Deprecated
Accomodation
, AccomodationHotelMotel
and AccomodationLodging
constants in PlaceCategory
. Use the newly added Accommodation
, AccommodationHotelMotel
and AccommodationLodging
constants instead.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Currently, Flutter 3.0 is not yet supported due to a known issue with platform views. We are awaiting a possible fix for the Flutter engine.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.11.4.0
New Features
- This version of the HERE SDK is delivered with map data version 44.
- 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
setGeoCoordinates()
and getGeoCoordinates()
to Metadata
.
API Changes - Breaking
- Aligned the return value of
PickTrafficIncidentResult.originalId
to return a String
instead of an integer. - 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
- 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.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using the new keyboard animations introduced with Flutter 2.10.2 the map view might blink in pink during the animation on iOS devices.
- 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. - Currently, Flutter 3.0 is not yet supported due to a known issue with platform views. We are awaiting a possible fix for the Flutter engine.
-
MapViewPin
instances do not disappear after tilting and panning the map far away: The pins still show up above the horizon. -
MapPolyline
instances ignore alpha color settings and will appear fully opaque. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.11.3.0
New Features
- Added class
PickTrafficIncidentResult
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(GeoCoordinates, MapMeasure)
and MapCamera.lookAt(GeoCoordinates, GeoOrientationUpdate, MapMeasure)
. - Added
sdk.transport.TruckSpecifications
as replacement for the deprecated sdk.routing.TruckSpecifications
.
API Changes - Deprecations
- Deprecated
sdk.routing.TruckSpecifications
class. Use 'sdk.transport.TruckSpecifications' instead. - Deprecated
MapCamera.lookAt(GeoCoordinates, double)
and MapCamera.lookAt(GeoCoordinates, GeoOrientationUpdate, 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. - Added
EVTruckOptions.truck_specifications
as replacement for the deprecated EVTruckOptions.specifications
. - Added
TruckOptions.truck_specifications
as replacement for deprecated TruckOptions.specifications
. - Deprecated
TruckOptions.specifications
. Use TruckOptions.truck_specifications
instead. - Deprecated
EVTruckOptions.specifications
. Use EVTruckOptions.truck_specifications
instead.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using the new keyboard animations introduced with Flutter 2.10.2 the map view might blink in pink during the animation on iOS devices.
- 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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. - 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
- 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 - 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
class which provides the local time, UTC time and the UTC offset, including DST time variations. - Deprecated
MapViewBase.pickMapFeatures(Rectangle2D, MapViewBase.PickMapFeaturesCallback)
, HereMapController.pickMapFeatures(Rectangle2D, MapViewBase.PickMapFeaturesCallback)
, MapViewBase.PickMapFeaturesCallback
, PickMapFeaturesResult
. Use instead the newly introduced MapViewBase.pickMapContent(Rectangle2D, MapViewBase.PickMapContentCallback)
, MapView.pickMapContent(Rectangle2D, MapViewBase.PickMapContentCallback)
, MapViewBase.PickMapContentCallback
, PickMapContentResult
.
Resolved Issues
- Fixed failing traffic incident queries for
TrafficEngine
. - 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
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using the new keyboard animations introduced with Flutter 2.10.2 the map view might blink in pink during the animation on iOS devices.
- 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.11.1.0
New Features
- Added
MapImage.withImageDataImageFormatWidthAndHeight(Uint8List imageData, ImageFormat imageFormat, int width, int height)
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 hereMapController.setWatermarkPlacement(WatermarkPlacement placement, int bottomMargin)
.
API Changes - Breaking
- Removed the previously deprecated constructor
Location.withAllFields
and the field Location.timestamp
. Use the default constructor instead and set the values afterwards.
API Changes - Deprecations
- Deprecated the method
HereMapController.setWatermarkPosition(WatermarkPlacement placement, int bottomCenterMargin)
. 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
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - When using the new keyboard animations introduced with Flutter 2.10.2 the map view might blink during the animation on iOS devices.
-
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.11.0.0
New Features
- 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(List<GeoCoordinatesKeyframe> keyframes, EasingFunction easingFunction, KeyframeInterpolationMode interpolationMode)
. The animation can be started or cancelled via mapMarker.startAnimation(mapMarkerAnimation)/cancelAnimation(mapMarkerAnimation)
. - Added support for online Bus route calculation via
RoutingEngine
. Added TransportMode.bus
and BusOptions
. - 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 enhanced camera animations with
MapCameraAnimationFactory.flyTo(GeoCoordinatesUpdate, double, Duration)
, MapCameraAnimationFactory.flyTo(GeoCoordinatesUpdate, GeoOrientationUpdate, double, Duration)
, MapCameraAnimationFactory.flyTo(GeoCoordinatesUpdate, MapMeasure, double, Duration)
, MapCameraAnimationFactory.flyTo(GeoCoordinatesUpdate, GeoOrientationUpdate, MapMeasure, double, Duration)
.
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. - The
returnToRoute()
feature of the RoutingEngine
now routes back to the first untravelled waypoint and the routeFractionTraveled
parameter is no longer ignored.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.10.5.0
New Features
- Added
MapMeasureRange
class to hold a MapMeasure
range, MapCameraLimits.zoomRange: MapMeasureRange
property. - Added
SdkContext.release()
method. It is recommended to call this method once, when the application shuts down. - Added support for custom backends with the new
EngineBaseURL
enum and the customEngineBaseUrls
field in SDKOptions
. - Added
MapCameraLimits.tiltRange(AngleRange)
property. - 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(MapMeasure, AngleRange)
, MapCameraLimits.clearBearingRanges
, MapCameraLimits.setTiltRangeAtZoom(MapMeasure, AngleRange)
and MapCameraLimits.clearTiltRanges
. - Added
MapCamera.cancelAnimations
methods. - Added
MapCameraListener
interface, MapCamera.addListener(MapCameraListener)
, MapCamera.removeListener(MapCameraListener)
and MapCamera.removeListeners
methods.
API Changes - Deprecations
- Deprecated
Location.timestampSinceBootInMilliseconds
. Use Location.timestampSinceBoot
instead. - Deprecated
MapCameraLimits.setMinTilt(double)
and MapCameraLimits.setMaxTilt(double)
. Use MapCameraLimits.tiltRange
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
interface, MapCamera.addObserver(MapCameraObserver)
and MapCamera.removeObserver(MapCameraObserver)
methods. Use MapCamera.addListener(MapCameraListener)
and MapCamera.removeListener(MapCameraListener)
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
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.10.4.0
New Features
- Added
sdk.transport.TruckType
enum. It is meant to replace the deprecated sdk.routing.TruckType
. - Added
TruckOptions.hazardous_materials
. It is meant to replace the deprecated TruckOptions.hazardous_goods
. - Added
sdk.transport.HazardousMaterial
enum. It is meant to replace the deprecated sdk.routing.HazardousGood
. - Added
EVTruckOptions.hazardous_materials
. It is meant to replace the deprecated EVTruckOptions.hazardous_goods
. - Traffic incident queries can now be canceled by calling the
cancel()
method of the TaskHandle
object returned by the TrafficEngine
. - Added
routing.TruckSpecifications.truck_type
. It is meant to replace the deprecated routing.TruckSpecifications.type
.
API Changes - Breaking
- The minimum supported Flutter version was raised from 2.5.3 to 2.8.0. The latest supported Flutter version is 2.10.2. The minimum supported Dart version was raised from 2.14.4 to 2.15.0. The latest supported Dart version is 2.16.1. Newer Flutter and Dart versions may also work, but are not guaranteed to work.
API Changes - Deprecations
- Deprecated
routing.TruckSpecifications.type
. Use routing.TruckSpecifications.truck_type
instead. - Deprecated
sdk.routing.HazardousGood
enum. Use 'sdk.transport.HazardousMaterial' instead. - Deprecated
EVTruckOptions.hazardous_goods
. Use EVTruckOptions.hazardous_materials
instead. - Deprecated
routing.TruckType
enum. Use routing.TruckType
instead. - Deprecated
TruckOptions.hazardous_goods
enum. Use 'TruckOptions.hazardous_materials' instead.
Known Issues
- Navigation: 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. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.10.3.0
New Features
- Added
sdk.transport.TunnelCategory
. It is meant to replace deprecated sdk.routing.TunnelCategory
. - 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
EVTruckOptions.link_tunnel_category
. It is meant to replace deprecated EVTruckOptions.tunnel_category
. - Added
TruckOptions.link_tunnel_category
. It is meant to replace deprecated TruckOptions.tunnel_category
. - Added
MapCameraUpdateFactory.setNormalizedPrincipalPoint(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(List<Anchor2DKeyframe>, EasingFunction, 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
MapIdleListener
to MapView
library to detect whether the map is idle or busy. Added addMapIdleListener(MapIdleListener)
to start receiving idle state notifications and removeMapIdleListener(MapIdleListener)
to stop receiving idle state notifications. It can be added for a HereMap
instance, which you can get from a MapView
instance. - Added constructors to 'RasterDataSource'.
- 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.changeConfigurationWithConfigPath()
. Use the another constructor instead. - Deprecated
BatterySpecifications.changingSetupDurationInSeconds
. Use BatterySpecifications.changingSetupDuration
instead. - Deprecated
TruckOptions.tunnel_category
enum. Use 'TruckOptions.link_tunnel_category' instead. - Deprecated
Maneuver.durationInSeconds
. Use Maneuver.duration
instead. - Deprecated
Section.durationInSeconds
. Use Section.duration
instead. - Deprecated
Section.trafficDelayInSeconds
. Use Section.trafficDelay
instead.
- Search: Deprecated
GeoPlace(title, externalIDs, type, categories, address, location, business, web)
and GeoPlace.allFields(title, externalIDs, type, categories, address, location, business, web, internalid, internalmyPlace)
constructors. Use GeoPlace.withDefaults()
instead. - Deprecated
Waypoint.durationInSeconds
. Use Waypoint.duration
instead. - Deprecated
sdk.routing.TunnelCategory
enum. Use 'sdk.transport.TunnelCategory' instead. - Deprecated
Route.durationInSeconds
. Use Route.duration
instead. - Deprecated
Route.trafficDelayInSeconds
. Use Route.trafficDelay
instead.
- Deprecated
MapCameraUpdateFactory.setPrincipalPointOffset(Point2D)
method. Use MapCameraUpdateFactory.setNormalizedPrincipalPoint(Anchor2D)
instead. - Deprecated
EVTruckOptions.tunnel_category
. Use EVTruckOptions.link_tunnel_category
instead. - Deprecated
PostAction.durationInSeconds
. Use PostAction.duration
instead. - Deprecated
PostAction
constructor. Use PostAction.withDefaults()
instead. - Deprecated
PreAction.durationInSeconds
. Use PreAction.duration
instead. - Deprecated
PreAction
constructor with parameters. Use PreAction.duration
instead.
- Deprecated
TransitStop.durationInSeconds
. Use TransitStop.duration
instead. Deprecated TransitStop(departure, durationInSeconds)
constructor. Use TransitDeparture.withDefaults(departure)
instead. - Deprecated
links
in sdk.routing.Section
. Use spans
instead.
Resolved Issues
- Adding custom raster layers no longer hides the HERE logo.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
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
AndroidManifest
meta-data option to specify a com.here.sdk.access_scope
an app can set the HRN value as defined by your project ID. On iOS devices, use the plist
key option to specify a Scope
. 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.
API Changes
- Dropped support for Flutter 2.2.x. Flutter 2.5.0 and Dart 2.14.0 or newer are now required - as already announced for the last release.
- Deprecated
sdk.routing.EVConsumptionModel(ascentConsumptionInWattHoursPerMeter, descentRecoveryInWattHoursPerMeter, freeFlowSpeedTable, trafficSpeedTable, auxiliaryConsumptionInWattHoursPerSecond)
constructor. Use one of the other constructors instead. - Deprecated
sdk.routing.TransitRouteOptions(departureTime, arrivalTime, alternatives, changes, modeFilter, modes, pedestrianSpeedInMetersPerSecond, pedestrianMaxDistanceInMeters, textOptions)
constructor. Use one of the other constructors instead. - Deprecated
sdk.routing.AvoidanceOptions(roadFeatures, countries, avoidAreas, zoneCategories, segments)
constructor. Use one of the other constructors instead. - Deprecated
FarePrice.validityPeriodInSeconds
. Use FarePrice.validityPeriod
instead. Deprecated FarePrice
constructor. Use FarePrice.withDefaults()
instead. - Deprecated
AuthenticationData.expiryTimeInSeconds
. Use AuthenticationData.expiryTime
instead. Deprecated AuthenticationData
constructor. Use AuthenticationData.withDefaults()
instead. - Deprecated
sdk.routing.PedestrianOptions(routeOptions, textOptions, avoidanceOptions, walkSpeedInMetersPerSecond)
constructor. Use one of the other constructors instead. - Deprecated
sdk.routing.TransitSectionDetails(transport, intermediateStops, agency, attributions, fares, incidents)
constructor. Use one of the other constructors instead. - Deprecated
sdk.routing.RouteTextOptions(language, instructionFormat, unitSystem)
constructor. Use one of the other constructors instead. - Deprecated
sdk.routing.FarePrice(type, estimated, currency, validityPeriodInSeconds, minimum, maximum)
constructor. Use one of the other constructors instead. - Deprecated
sdk.routing.ScooterOptions(routeOptions, textOptions, avoidanceOptions, allowHighway)
constructor. Use one of the other constructors instead.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
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
. - 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. - 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. - Raised minimum supported Flutter version from 2.2.3 to 2.5.3. The latest Flutter version that is guaranteed to work is 2.8.1 - other versions may also work, but are not guaranteed to work.
API Changes
- Changed type of
RefreshRouteOptions
constructor parameter from sdk.routing.TransportMode
to sdk.transport.TransportMode
. - Removed the previously deprecated
release()
method from all classes as it was doing nothing. - Routing: Deprecated
EVConsumptionModel(ascentConsumptionInWattHoursPerMeter, descentRecoveryInWattHoursPerMeter, freeFlowSpeedTable, trafficSpeedTable, auxiliaryConsumptionInWattHoursPerSecond)
constructor. Use the default constructor instead. - Search: Deprecated
SearchOptions
constructor that takes all parameters. Please use the default constructor instead. - Deprecated
Size2D.withDefaults()
constructor. Use one of the available constructors instead. - Search: Deprecated
Address.withValues()
constructor that takes all parameters. Please use the default constructor instead. - Deprecated
Point2D.withDefaults()
constructor. Use one of the available constructors instead. - Routing: Deprecated
TransitRouteOptions(departureTime, arrivalTime, alternatives, changes, modeFilter, modes, pedestrianSpeedInMetersPerSecond, pedestrianMaxDistanceInMeters, textOptions)
constructor. Use the default constructor instead. - Deprecated
EVCarOptions
constructor. Use EVCarOptions.withDefaults()
instead. - Deprecated
Route.transportMode
. Use the newly introduced Route.requestedTransportMode
instead. - Routing: Deprecated
AvoidanceOptions(roadFeatures, countries, avoidAreas, zoneCategories, segments)
constructor. Use the default constructor instead. - Deprecated
CarOptions
constructor. Use CarOptions.withDefaults()
instead. - Routing: Deprecated a route's
Link
. Use Span
instead. - Routing: Deprecated
PedestrianOptions(routeOptions, textOptions, avoidanceOptions, walkSpeedInMetersPerSecond)
constructor. Use the default constructor instead. - Routing: Deprecated
TransitWaypoint
constructor that takes all parameters. Please use the default constructor instead. - Routing: Deprecated
TransitSectionDetails(transport, intermediateStops, agency, attributions, fares, incidents)
constructor. Use the default constructor instead. - Deprecated
TruckOptions
constructor. Use TruckOptions.withDefaults()
instead. - Routing: Deprecated
RouteTextOptions(language, instructionFormat, unitSystem)
constructor. Use the default constructor instead. - Deprecated
EVTruckOptions
constructor. Use EVTruckOptions.withDefaults()
instead. - Deprecated
sdk.routing.TransportMode
enum. Use the newly introduced 'sdk.transport.TransportMode' instead. - Routing: Deprecated
FarePrice(type, estimated, currency, validityPeriodInSeconds, minimum, maximum)
constructor. Use the default constructor instead. - Routing: Deprecated
ScooterOptions(routeOptions, textOptions, avoidanceOptions, allowHighway)
constructor. Use the default constructor instead.
Resolved Issues
- 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: When
cachePath
and persistentMapStoragePath
are changed via SDKOptions
, then it may not change the default path. - 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
.
Known Issues
- Navigation: Outlines for
MapPolyline
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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.
Version 4.10.0.0
New Features
-
MapView
: Added support for mercator projection when a MapView
is created programmatically. Added HereMapOptions
and MapProjection
that allow to specify the map projection. Enhanced constructor of HereMap
with optional options
parameter of type HereMapOptions
. Examples: HereMap(..., options: HereMapOptions(MapProjection.globe),)
-
HereMap(..., options: HereMapOptions(MapProjection.webMercator),)
- Added
MapContext
class and added getMapContext()
method to HereMapController
. 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
RasterDataSourceFactory
which is used to create RasterDataSource
objects. - 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
.
- The HERE SDK is now compatible with Dart FFI package versions
>=1.0.0 <=1.1.2
- instead of just supporting FFI 1.0. - Added
HereMapControllerCore
class. Added hereMapControllerCore
property to HereMapController
. HereMapControllerCore
is used to initialize a MapLayer
that can be used with a MapLayerBuilder
to support custom raster layers. - Import routes: Added
RouteHandle(String handle)
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 importRouteFromHandle(RouteHandle routeHandle, RefreshRouteOptions refreshRouteOptions, CalculateRouteCallback callback)
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
.
API Changes
- 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.lookAtPointWithOrientationAndDistance(GeoCoordinates target, OrientationUpdate orientation, Double distanceInMeters)
use now MapCamera.lookAtPointWithGeoOrientationAndDistance(GeoCoordinates target, GeoOrientationUpdate orientation, Double distanceInMeters)
. - 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 method
MapCamera.animateToAreaWithGeoOrientationAndViewRectangle(GeoBox target, GeoOrientationUpdate orientation, Rectangle2D viewRectangle, int durationInMs)
. Use one of the other available methods instead. - Removed the previously deprecated
Agency.icon
property. This feature is no longer supported. - Deprecated the method
MapScene.setLayerState(String layerName, MapSceneLayerState newState)
. Use the new method MapScene.setLayerVisibility(String layerName, VisibilityState visibility)
instead. Deprecated the enum MapSceneLayerState
. Use the enum VisibilityState
instead.
Resolved Issues
- 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.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
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. - 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
. - When
cachePath
and persistentMapStoragePath
are changed via SDKOptions
, then it may not change the default path.
Version 4.9.4.0
New Features
- Routing: Added support for bicycles. Now it is possible to create bicycle routes online with the
RoutingEngine
using BicycleOptions
. Added also TransportMode.bicycle
. - Increased the supported maximum Flutter version from 2.5.2 to 2.5.3. The maximum supported Dart version was updated from 2.14.3 to 2.14.4. Newer versions may also work, but are not guaranteed to work.
- 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.
Resolved Issues
- Fixed: In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
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. - 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
.
Version 4.9.3.0
API Changes
- Renamed the class
PickMapFeaturesResultPickPoiResult
to PickPoiResult
.
Resolved Issues
- 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: 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
- Outlines for
MapPolyine
lines can show a minimal gap at certain zoom levels. As a workaround use a round LineCap
style.
Version 4.9.2.0
Highlights
- Removed the beta status for the HERE SDK for Flutter. Please note, that due to the rapid development of Dart and Flutter also our HERE SDK APIs may change for new releases without prior notice or a deprecation process. We expect that this will happen only for rare exceptional cases - if at all. From now on, for the majority of cases the HERE SDK for Flutter will follow a deprecation process and upcoming breaking changes will be communicated via Release Notes and in the API Reference documentation.
- Added iOS 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 feature to observe when a
MapCamera
animation or flyTo()
-call has completed: Added AnimationListener
interface, 'AnimationState' enumeration, MapCamera.startAnimationWithListener
method, MapCamera.flyToWithOptionsAndGeoOrientationAndListener
and MapCamera.fflyToWithOptionsAndGeoOrientationAndDistanceAndListener
methods. - 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 factory method LocationIndicator.withMapView(MapViewBase mapView)
, added methods LocationIndicator.enable(MapViewBase mapView)
, 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
- Fixed: Depending on your configuration when running on Xcode simulator, you may need to modify the
post_install
task in the generated Podfile. Now, arm64 M1 support is already integrated by default.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
- 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
Highlights
- The minimum supported Flutter version was raised from 2.0.6 to 2.2.3. Flutter 2.5.2 (and therefore Dart 2.14.3) is now officially supported.
New Features
- 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.animateToAreaWithGeoOrientationAndViewRectangle(GeoBox target, GeoOrientationUpdate orientation, Rectangle2D viewRectangle, int durationInMs)
. Use one of the other available methods instead. - Deprecated
MapCameraFlyToOptions.durationInMs
, use MapCameraFlyToOptions.duration
instead.
Resolved Issues
- Fixed: Route imports no longer fail when
Location.time
is set. - 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
-
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. - Depending on your configuration when running on Xcode simulator, you may need to modify the
post_install
task in the generated Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' if `uname -m` == "x86_64\n"
end
end
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
end
end
project.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
end
end
Version 4.9.0.0
New Features
- Added new animation features to
MapCamera
with startAnimation(MapCameraAnimation)
, EasingFunction
and KeyframeInterpolationMode
. Added related classes GeoCoordinatesKeyframe
, GeoOrientationKeyframe
, Point2DKeyframe
, ScalarKeyframe
, MapCameraAnimation
, MapCameraAnimationFactory
and MapCameraKeyframeTrack
. - Routes can now be imported: Added
routingEngine.importRoute()
to import a route from a list of GeoCoordinates
and RouteOptions
. - Added support for map marker clustering with the new classes
MapMarkerCluster
and MapMarkerCluster.ImageStyle
. A marker cluster can be added/removed with MapScene.addMapMarkerCluster()/MapScene.emoveMapMarkerCluster
. See the MapItems example app for a usage example. - Added optional field
time
to Location
class to specify the time when the location data was set. - Batch support for
MapMarker
: Added method to add multiple MapMarker
items at once. With mapScene.addMapMarkers()
a list of MapMarker
items can be added to a MapScene
with a single batch call. - Search: Added
PlaceType.intersection
to indicate an intersection of at least two streets. Note: This is a beta feature.
API Changes
- Removed the previously deprecated factory method in
Location
class. Use one of the other available constructors instead. - Removed the previously deprecated
MapRepresentable
interface and addMapRepresentable
and removeMapRepresentable
methods from HereMapController
. Use the MapViewLifecycleListener
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
class, NoticeCode
enum and Section.notices
property. Use SectionNoticeCode
, SectionNotice
class and Section.getSectionNotices()
method instead. - Search: Removed the following fields from
Address
class that have been previously deprecated: stateName
, countyName
, streetName
, additionalData
. Please use state
, county
and street
instead. The field additionalData
was already unused. - Search: Removed the perviously deprecated
optionsNotAvailable
value from the SearchError
enum. It was replaced by the SearchError.invalidParameter
value. - Removed the previously deprecated
greyDay
and greyNight
from MapScheme
enum. Use the normal map scheme variants instead. - Deprecated field
timestamp
in Location
class, please use the newly introduced time
field instead.
Resolved Issues
- Fixed Chinese fonts that have been displayed accidentially for Japan labels.
- Fixed: Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
-
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. - Flutter 2.5 is not officially supported yet. To run apps on simulator, modify the
post_install
task in the generated Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' if `uname -m` == "x86_64\n"
end
end
installer.generated_projects.each do |project|
project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
end
end
project.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
end
end
Version 4.8.4.0
New Features
- Routing: Added
getDurationInSeconds
method 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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
Version 4.8.3.0
Highlights
- The latest stable Flutter version that works with the HERE SDK was updated from 2.2.2 to 2.2.3. Newer versions may also work, but are not guaranteed to work.
New Features
- Public transit routes: Added support for new
pedestrian
sections to provide better information on in-station walks, for example, when walking from a place of type accessPoint
type to a place of type station
. - Routing: Added
RouteOptions.enableTrafficOptimization
property which is true by default, and when set to false, it doesn't consider traffic information and ignores RouteOptions.departureTime
. - Routing: It's now possible to avoid individual segments on a
Route
. With the newly added segments
field in AvoidanceOptions
users can specify the parts of a route they would like to avoid after a recalculation. The segments can be identified via Route -> Section -> Span -> SegmentReference
. - Added
SegmentReference
class that represents a reference to a segment id with a travel direction. - Added
getSegmentReference
method to the Span
class. - Added
TravelDirection
enum that indicates the travel direction along a segment.
- Added enhanced APIs to control the
MapCamera
with the new classes MapCameraUpdate
, MapCameraUpdateFactory
and MapMeasure
. Added the applyUpdate
method to MapCamera
that accepts a MapCameraUpdate
as parameter. - Routing: Added
violatedAvoidSeasonalClosure
, violatedAvoidTollTransponder
, seasonalClosure
, tollTransponder
, tollsDataUnavailable
and chargingStopNotNeeded
symbols to the SectionNoticeCode
enum.
API Changes
- Transit routes no longer provide fare information and the
TransitSectionDetails.fares
list is always empty. - Routing: Deprecated
SectionNoticeCode.violatedPedestrianOption
symbol. It will be removed in v4.11.0 as it is no longer supported. - Deprecated
persistentMapStorageFolderAccessDenied
and failedToLockPersistentMapStorageFolder
values from the InstantiationErrorCode
enum. The persistent storage directory is no longer locked.
Resolved Issues
- Fixed: It is not possible to set both
RouteOptions.departureTime
and RouteOptions.arrivalTime
at the same time. Plus, RouteOptions.arrivalTime
is ignored when RouteOptions.enableTrafficOptimization
is set to false.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
Version 4.8.2.0
New Features
- Improved search for electric vehicle charging stations: Added classes
EVChargingPool
and EVChargingStation
. A charging pool for electric vehicles is an area equipped with one or more charging stations. A charging station defines a group of connectors for electrical vehicles that share a common charging connector type and max power level. Note: This is a beta feature. - Improved search for electric vehicle charging stations: Added property
Details.evChargingPool
that represents the details of the charging pool for electric vehicles. Note: This is a beta feature. - Routing: Added information on toll costs with a new
PaymentMethod
enum, TollFare
& Toll
structs and Section.tolls
property. Note: This is a beta feature.
Resolved Issues
- Fixed: In rare cases,
Storage.LevelDB
related crashes can occur when starting the app.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
Version 4.8.1.0
New Features
- Routing: Added
NoRouteHandle
enum value to RoutingError
to indicate that the route did not contain the required RouteHandle
, which is needed, for example, to refresh a route. - Search: Added new
name
property to PlaceCategory
that provides a level 3 description.
API Changes
- Renamed
GeoCorridor.make()
to GeoCorridor()
.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases,
Storage.LevelDB
related crashes can occur when starting the app. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
Version 4.8.0.0
Highlights
- The minimum supported Flutter and Dart version was raised to Flutter 2.0 and Dart 2.12.
- FFI 1.0 is now supported, which means that other 3rd party plugins also need to be updated to use FFI 1.0, or they can't be used together with the HERE SDK.
- Support for null safety was added. Null safety can be optionally disabled.
- It's no longer necessary to call
release()
to dispose an object. The method has been deprecated and it will be removed in the future. When still calling it, it will do nothing. - A new reference application for the HERE SDK for Flutter (Navigate Edition) was published on GitHub. It shows how a complex and release-ready project targeting iOS and Android devices may look like. You can use it as a source of inspiration for your own HERE SDK based projects - in parts or as a whole. Many parts of the app overlap with the Explore Edition - however, guidance requires the Navigate Edition. At the moment, only HERE SDK 4.7 is supported.
API Changes
- Deprecated
MapCameraOrientation
- replaced with GeoOrientation
- Deprecated
MapCameraOrientationUpdate
- replaced with GeoOrientationUpdate
- Deprecated
MapCameraState.targetOrientation
- replaced with MapCameraState.orientationAtTarget
- Deprecated
MapCamera.flyToWithOptionsAndOrientation(GeoCoordinates target, MapCameraOrientationUpdate orientation, MapCameraFlyToOptions animationOptions) → void
- replaced with MapCamera.flyToWithOptionsAndGeoOrientation(GeoCoordinates target, GeoOrientationUpdate orientation, MapCameraFlyToOptions animationOptions) → void
- Deprecated
MapCamera.flyToWithOptionsAndOrientationAndDistance(GeoCoordinates target, MapCameraOrientationUpdate orientation, double distanceInMeters, MapCameraFlyToOptions animationOptions) → void
- replaced with MapCamera.flyToWithOptionsAndGeoOrientationAndDistance(GeoCoordinates target, GeoOrientationUpdate orientation, double distanceInMeters, MapCameraFlyToOptions animationOptions) → void
- Deprecated
MapCamera.lookAtAreaWithOrientation(GeoBox target, MapCameraOrientationUpdate orientation) → void
- replaced with MapCamera.lookAtAreaWithGeoOrientation(GeoBox target, GeoOrientationUpdate orientation) → void
- Deprecated
MapCamera.lookAtAreaWithOrientationAndViewRectangle(GeoBox target, MapCameraOrientationUpdate orientation, Rectangle2D viewRectangle) → void
- replaced with MapCamera.lookAtAreaWithGeoOrientationAndViewRectangle(GeoBox target, GeoOrientationUpdate orientation, Rectangle2D viewRectangle) → void
- Deprecated
MapCamera.lookAtPointWithOrientationAndDistance(GeoCoordinates target, MapCameraOrientationUpdate orientation, double distanceInMeters) → void
- replaced with MapCamera.lookAtPointWithGeoOrientationAndDistance(GeoCoordinates target, GeoOrientationUpdate orientation, double distanceInMeters) → void
- Deprecated
MapCamera.orbitBy(MapCameraOrientationUpdate delta, Point2D origin) → void
- replaced with MapCamera.orbitByWithGeoOrientation(GeoOrientationUpdate delta, Point2D origin) → void
- Deprecated
MapCamera.setTargetOrientation(MapCameraOrientationUpdate orientation) → void
- replaced with MapCamera.setOrientationAtTarget(GeoOrientationUpdate orientation) → void
- Removed the previously deprecated
updateGeometry()
methid from MapPolyline
and MapPolygon
. - Search: Removed previously deprecated fields in
Contact
: emailAddresses
, landlinePhoneNumbers
, mobilePhoneNumbers
, websiteAddresses
. - Routing: Removed the previously deprecated
Arrival
and Departure
classes.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases,
Storage.LevelDB
related crashes can occur when starting the app. - In rare cases, the map view can show a gray screen right after start-up and the application may appear not responding (ANR).
Version 4.7.7.0
Highlights
- Preview: Flutter version and FFI version have been raised. Support for null safety was introduced. It's no longer necessary to call release(). The HERE SDK reference application was introduced on GitHub. See the details for all these changes in the highlights for the 4.8.0.0 release above.
New Features
- Search: Added
politicalView
member to Place
class. The optional value can be checked if it is matching the one that was set beforehand via SDKOptions
.
API Changes
- The map styles for
NORMAL_DAY
, NORMAL_NIGHT
, HYBRID_DAY
and HYBRID_NIGHT
have been updated to the ones that have been made available as preview
beforehand. The new map styles feature a clean and neutral base map and a street network with improved gray scales that allow a better hierarchy of elements that can be added on top. -
MapView
: "Simplified Chinese", "Traditional Taiwan" and "Traditional Hong Kong" language labels are now supported. - Removed the "fromLambda" constructor from all related Dart classes, for example
Gestures
, SearchEngine
and so on. Instead of creating a gesture listener like this: tapListener = TapListener.fromLambdas(lambda_onTap: (Point2D p) { ... });
the code can be simplified now to: tapListener = TapListener((Point2D p) { ... });
. - Routing: Updated the API for the returnToRoute and refreshRoute feature for
RoutingEngine
: - Changed the parameter order of
RoutingInterface.returnToRoute()
: The startingPoint
parameter is now the second parameter, not the third parameter. The feature is still in beta. - Added a
startingPoint
parameter to the RoutingEngine.refreshRoute()
method. In return, deleted RefreshRouteOptions.updateStartingPoint()
. The feature is still in beta. - Deleted the ReturnToRouteEngine. Use the newly introduced
RoutingInterface.returnToRoute()
method instead.
Resolved Issues
- Fixed: A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. - Fixed: When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.7.6.0
Highlights
- Important note: It is planned to raise the minimum supported Flutter and Dart version to Flutter 2.0 and Dart 2.12 with the upcoming major release v4.8.0. With this release we also plan to switch to FFI 1.0, which means that other 3rd party plugins also need to be updated to use FFI 1.0, or they can't be used together with the HERE SDK. In addition, we plan to introduce null safety. Note that the HERE SDK is not compatible with Flutter 2.2.0 or higher - as the HERE SDK does not yet support FFI 1.0 until v4.8.0.
New Features
- Improved map rendering performance on low end devices.
Resolved Issues
- Fixed: A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
-
MapViewPin
instances cannot be removed after tilting and panning the map. - A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets.
Version 4.7.5.0
Highlights
- Important note: It is planned to raise the minimum supported Flutter and Dart version to Flutter 2.0 and Dart 2.12 with the upcoming major release v4.8.0. With this release we also plan to switch to FFI 1.0, which means that other 3rd party plugins also need to be updated to use FFI 1.0, or they can't be used together with the HERE SDK. In addition, we plan to introduce null safety. Note that the HERE SDK is not compatible with Flutter 2.2.0 or higher - as the HERE SDK does not yet support FFI 1.0 until v4.8.0.
New Features
- Routing: Added avoidance options for pedestrians with
PedestrianOptions.avoidanceOptions
. - Search: Added support to search along longer route polylines with a
GeoCorridor
. Either increase halfWidthInMeters
when set via constructor or do not set it - by using the GeoCorridor
constructor that only allows to set the GeoPolyline
. The parameter radiusInMeters
has been deprecated: Please only use halfWidthInMeters
as constructor parameter to specify the thickness of the route corridor. When increasing halfWidthInMeters
then a greater simplification of the polyline shape can be achieved resulting in a longer route that can be searched along. On the downside the results are less accurate and can lie farther away from the route. When halfWidthInMeters
is not set, a suitable value is set internally based on "best guess". - The
LocationIndicator
now supports a gray state that can be set via LocationIndicator.isActive
.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets.
Version 4.7.4.0
Highlights
- Important note: It is planned to raise the minimum supported Flutter and Dart version to Flutter 2.0 and Dart 2.12 with the upcoming major release v4.8.0. With this release we also plan to switch to FFI 1.0, which means that other 3rd party plugins also need to be updated to use FFI 1.0, or they can't be used together with the HERE SDK. In addition, we plan to introduce null safety. Note that the HERE SDK is not compatible with Flutter 2.2.0 or higher - as the HERE SDK does not yet support FFI 1.0 until v4.8.0.
New Features
- Routing: Added
TruckType
enum to specify the type of a truck for the TruckSpecifications
. - Routing: Added
TruckSpecifications.trailerCount
to specify the number of trailers. - Routing: Added
accessPoint
to RoutePlaceType
enum. It allows to differentiate Section
's based on RoutePlace.type
. - Public transit: Added
FarePriceType
enum, FarePrice.type
, FarePrice.minimum
and FarePrice.maximum
properties. FarePrice
provides the actual price value.
API Changes
- Gestures: A finger down gesture stops now any ongoing animation including kinetic panning.
- Routing: Deprecated
FarePrice.unit
, use the newly introduced FarePrice.validityPeriodInSeconds
property instead. - Routing: Deprecated the unsupported
Agency.icon
property. This property is no longer supported and will be removed with HERE SDK release v4.10.0.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets.
Version 4.7.3.0
Highlights
- Important note: It is planned to raise the minimum supported Flutter and Dart version to Flutter 2.0 and Dart 2.12 with the upcoming major release v4.8.0. With this release we also plan to switch to FFI 1.0, which means that other 3rd party plugins also need to be updated to use FFI 1.0, or they can't be used together with the HERE SDK. In addition, we plan to introduce null safety.
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 searchByCoordinatesWithRadius(GeoCircle circle, SearchOptions options, SearchCallback callback)
.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets.
Version 4.7.2.0
Highlights
- Important note: It is planned to raise the minimum supported Flutter and Dart version to Flutter 2.0 and Dart 2.12 with the upcoming major release v4.8.0. With this release we also plan to switch to FFI 1.0, which means that other 3rd party plugins also need to be updated to use FFI 1.0, or they can't be used together with the HERE SDK. In addition, we plan to introduce null safety.
- The Developer's Guide has been extended and is now on par with the content that was already available for the native platforms.
New Features
- Added a feature to refresh a
Route
: Added the RouteOptions.enableRouteHandle
flag to get a RouteHandle
, a RefreshRouteOptions
class and a RoutingEngine.refreshRoute()
method. Note that currently EVRouteOptions
are not supported. See the related chapter in the Developer's Guide for more information. -
LocationIndicator
: Added a new style for pedestrians. The new style is added to IndicatorStyle
and can be set to a LocationIndicator
instance to switch the default 3D map marker model to indicate the current heading and location. Optionally, the style can be customized. - Added an option to affect FPS rendering of the map view by decreasing or increasing the frameRate with
MapView.frameRate
. This can be useful to reduce CPU usage for low end devices. The default FPS is 60 frames per second. It is also possible to deactivate automatic render cycles by setting FPS to 0.
Resolved Issues
- Fixed:
MapMarker3D
instances are only partly rendered when the camera is positioned too far from earth.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.7.1.0
Highlights
- Added a default 3D
LocationIndicator
to show the current location and travel direction of a user. It can be added to the map view with MapView.addMapLifecycleListener()
. Update its location via Mapview.updateLocation()
that accepts a Location
as parameter. The look of the default asset can be customized by setting a MapMarker3DModel
as parameter to LocationIndicator.setMarker3dModel()
. You can also specify the MarkerType
: In the future, it may be used to enable different styles of markers for different use cases.
New Features
- Introduced taxi routes. Added
TransportMode.taxi
type and a TaxiOptions
class to calculate routes optimized for taxis via RoutingEngine.calculateTaxiRoute()
. 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.
API Changes
- Changed type of screenshot object returned by
HereMapController.takeScreenshot()
from an Image
object to a ImageInfo
object. Flutter's Image
is actually of type Widget
, which makes it more difficult to access the RGB data. Dart's ImageInfo
simplifies this and it can still be converted to a Flutter Widget
, if desired.
Resolved Issues
- Fixed: Public transit routes do not contain maneuvers.
- Fixed: On iOS devices,
MapViewPin
instances disappear from MapView
when changing device orientation. They reappear when moving the map.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- 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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.7.0.0
Highlights
- Raised the minimum supported Flutter version from Flutter 1.20 to Flutter 1.22 and Dart 2.10. It is planned to raise the minimum supported Flutter and Dart version to Flutter 2.0 and Dart 2.12 with the upcoming major release v4.8.0.
- New Flutter example apps added on GitHub: The Flutter selection contains now the same set of example apps as the native iOS and Android platforms.
- Introduced public transit routing with a new
TransitRoutingEngine
that can calculate public transit routes. It uses TransitWaypoint
type waypoints and a TransitRouteOptions
class to specify various transit related options. Note that the API is in an early development stage. More features and overall stabilization are planned for the next releases.
New Features
- Along with the newly introduced
TransitRoutingEngine
(see above), the following supportive types have been added: AttributionType
enum, FarePriceType
enum, FareReason
enum, PreActionType
enum, TransitDepartureStatus
enum, TransitIncidentType
enum, TransitIncidentEffect
enum, TransitMode
enum, TransitModeFilter
enum, Agency
class, Attribution
class, Fare
class, FarePrice
class, PreAction
class, TransitIncident
class, TransitDeparture
class, TransitSectionDetails
class, TransitStop class, and TransitTransport
class. - Routing: Introduced a new
Span
class that is accessible from a Section
on a Route
. It points to the related section notices to indicate possible route violations. With the Span
class these violations can now be identified on the Route
as they contain the length in meters and the geometry. - Routing: Added additional constructor for
IsolineOptions.Calculation
: IsolineOptionsCalculation.withDefaultsAndCalculationMod(IsolineRangeType rangeType, List<int> rangeValues, IsolineCalculationMode isolineCalculationMode)
. - Search: Added new method to
SearchEngine
to get place details for a Suggestion
that contains a href
String. Use the new sendRequest()
method for this.
API Changes
- Added a new
MapViewLifecycleListener
that replaces the deprecated MapRepresentable
. It can be added or removed from a Mapview
. Use this to get notified on the map view's lifecycle. - Deprecated
MapRepresentable
and the related methods to add or remove it from a MapView
. Use the newly introduced MapViewLifecycleListener
instead. - Removed the previously deprecated
GeoBox.intersects(GeoBox)
and GeoBox.contains(GeoBox)
. - Removed the previously deprecated
LocationProvider
and the LocationListener.onLocationTimeout()
method. - Removed the previously deprecated
Section.getTransportMode()
method. - Removed the previously deprecated
GeoCorridor(List<GeoCoordinates>, Double)
constructor. - Removed the previously deprecated
Place.getCoordinates()
. - Removed the previously deprecated fields and constructors from
Color
.
Resolved Issues
- Fixed: The opening hours for a
Place
that closes after midnight end at midnight.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - Public transit routes do not contain maneuvers.
Version 4.6.5.0
New Features
- Added support for political views.
SDKOptions
allow now to specify the politicalView
string. It's a three letter country code defined by ISO 3166-1 alpha-3. When set, all map data will respect the point of view of this country. Note that this is a beta feature and thus there can be bugs and unexpected behaviour. - A
Place
can now be serialized or deserialized with serializeCompact()
and deserialize()
to or from a String
. - Routing: Added
SectionNoticeCode
and NoticeSeverity
enums, SectionNotice
class and Section.sectionNotices
property to get informed on possible route violations. - Isoline Routing:
- Added
RoutePlaceDirection
enum with values arrival
and departure
. - Added
isolineDirection
field to IsolineOptionsCalculation.withDefaultsAndDirection()
and IsolineOptionsCalculation.withNoDefaults()
factory methods (with default value of RoutePlaceDirection.departure
). - Extended the existing
IsolineOptions.Calculation
constructor to accept the new RoutePlaceDirection
enum. - Added
RouteOptions.arrivalTime
to set an optional time when a travel is expected to end. Note that this parameter is currently only supported for isoline route calculation.
API Changes
- Routing: Deprecated the
Notice
class and NoticeCode
enum along with Section.notices
property, use the newly introduced SectionNoticeCode
, SectionNotice
class and Section.sectionNotices
property instead. - Search: Deprecated
SearchError.optionNotAvailable
enum value, it will be replaced by the existing SearchError.invalidParameter
value.
Highlights
- Important note: It is planned to raise the minimum supported Flutter and Dart version to Flutter 2.0 and Dart 2.12 with the upcoming major release v4.8.0. For this release the minimum supported Flutter version is still Flutter 1.20.0 and Dart 2.9.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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - The opening hours for a
Place
that closes after midnight end at midnight. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.6.4.0
New Features
- Routing: Introduced
Waypoint.minCourseDistanceInMeters
to specify an optional distance parameter during which a user can avoid taking actions. - The size of the viewport can now be retrieved from
MapView
with the new viewportSize
property that returns Size2D
in physical pixels. - Enhanced FlyTo
MapCamera
animations from A to B with target orientation and target distance: flyToWithOptionsAndOrientation(GeoCoordinates target, MapCameraOrientationUpdate orientation, MapCameraFlyToOptions animationOptions)
. - 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.json"
API Changes
- The map styles
MapScheme.greyDay
, MapScheme.greyNight
have been deprecated and will be removed. Use the normal
variants instead.
Resolved Issues
- For Android: The workaround required to avoid a white screen being displayed after sending an app to the background is now applied for users of both
FlutterActivity
and the FlutterFragmentActivity
. Until now it was not applied for FlutterFragmentActivity
, causing an white screen if an app was using that activity.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - The opening hours for a
Place
that closes after midnight end at midnight. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.6.3.0
New Features
- Added new
WatermarkStyle
enum that defines the style of the HERE watermark logo. The dark watermark should be used for custom styles that are brighter (like daytime) and the light watermark for darker custom schemes (like night or satellite based). Added a new loadScene()
method to MapScene
to accept the new enum together with a custom style. -
MapCamera
: Added FlyToOptions
to customize the fly-to animation from current target GeoCoordinates
to a new location. The durationInMs
parameter defines how long the animation will run, the bowFactor
defines a relative camera height for the ballistic curve that ranges from -1 < 0 (concave curve) to 0 (constant height) to 0 < 1 (convex curve). The maximum height can be achieved with a bowFactor
of 1, the minimum with -1. Note that the height is relative to the distance between current target and new target to achieve a constant look regardless of the current zoom level. - Routing: Added
sideOfStreetHint
property to Waypoint
. These optional GeoCoordinates
indicate which side of the street should be used to reach the waypoint. For example, if the location is to the left of the street, the route will prefer using that side in case the street has dividers. Hence, if the street has no dividers, sideOfStreetHint
is ignored.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - The opening hours for a
Place
that closes after midnight end at midnight. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.6.2.0
Highlights
- The minimum supported Flutter version was raised from 1.17 to 1.20. The minimum supported Dart version is now 2.9.0.
New Features
- Introduced beta versions of new map style combinations for use with
MapScene.loadScene()
: "preview.normal.day.json", "preview.normal.night.json", "preview.hybrid.day.json" and "preview.hybrid.night.json". - Added new map item type:
MapArrow
elements can now be rendered on the map to indicate a direction. They can be added or removed like other map items via MapScene
. -
MapMarker
items can now be made invisible once they overlap each other at certain zoom levels. They contain a new property with get/set isOverlapAllowed()
.
API Changes
- The free flow traffic layer is now rendering green traffic flow lines by default.
Resolved Issues
- Fixed: When traffic flows are enabled, map gestures may behave slower than expected.
- Fixed: When
SDKOptions
is created before initialization of SDKNativeEngine
it may contain a corrupted path.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - The opening hours for a
Place
that closes after midnight end at midnight. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.6.1.0
Highlights
- Added new
flyTo()
method to MapCamera
for basic animations from A to B by setting new target coordinates. The animation can be interrupted by gestures or any programmatical change of the camera's position or orientation.
New Features
- Routing: Introduced
ZoneCategory
enum and added zoneCategories
field to to the AvoidanceOptions
struct which is a collection of ZoneCategory
's. - EV routing: Introduced
Route.getEVDetails()
which returns the accumulated evDetails
data for all sections of a route.
Build System Changes
- When building for iOS, CocoaPods 1.10 or above is now required. The use of older versions can result in the linker choosing an incorrect architecture with which to link.
API Changes
- Routing: The
AvoidanceOptions
constructor requires to set the new field zoneCategories
. - Routing: Deprecated
Section.arrival
and Section.departure
. Instead, use the newly introduced Section.arrivalPlace
and Section.departurePlace
to get a RoutePlace
. - Deprecated the
Address
fields stateName
, countyName
, streetName
and the related constructors. Instead, use the newly introduced constructor that takes the new fields state
, country
and street
.
Resolved Issues
- Fixed: Performing a
CategoryQuery
or a TextQuery
search no longer returns SearchError.httpError
when searching in a circle, whose radius is a number with a fraction.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - When
SDKOptions
is created before initialization of SDKNativeEngine
it may contain a corrupted path.
Version 4.6.0.0
Highlights
- Android devices running older Adreno 330 GPUs are now supported.
- 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 lookAtAreaWithOrientationAndViewRectangle(GeoBox target, MapCameraOrientationUpdate orientation, Rectangle2D viewRectangle)
. 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. - Added
SDKNativeEngine.dispose()
to release resources. It should be used in cases when it's necessary to create a new instance of SDKNativeEngine
with the same access key id as previously used. - Road shields are now rendered by default on the map view.
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. - The free flow traffic layer does no longer render the green traffic flow lines. In the future, an API to enable / disable the flow is planned to be introduced.
- The
SDKNativeEngine
now locks access to the map data cache. When another instance of SDKNativeEngine
is instantiated with the same access key id then now an exception is thrown. -
MapView
: Added clamping to principal point when the coordinates are outside of the viewport. -
Maneuver
: Deprecated roadName
, roadNameLanguageCode
, roadNumber
, nextRoadName
, nextRoadNameLanguageCode
, nextRoadNumber
. Added instead RoadTexts
with roadTexts
and nextRoadTexts
and LocalizedText
and LocalizedTexts
.
Resolved Issues
- Fixed: A
MapPolyline
may be unexpectedly rendered over a MapMarker
.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - When
SDKOptions
is created before initialization of SDKNativeEngine
it may contain a corrupted path.
Version 4.5.4.0
Highlights
- The supported device specifications have been fine tuned and contain now more granular details on the supported devices. Details can be found in the About section of the Developer's Guide for this edition.
New Features
- Added support for a transform center: The
MapCamera
know allows to set and get a principal point as Point2D
. This point determines where the target is placed within the map view. With this you can, for example, lower the map's default center as it will affect map transformations such as rotations and tilt. - Extended walk routing options: Added
PedestrianOptions.walkSpeedInMetersPerSecond
property. Note that this feature is released as beta. By setting a walk speed you can calculate pedestrian routes specific for different walk profiles. - Searching for a
CategoryQuery
within a GeoCircle
or GeoBox
is no longer marked as a beta feature. - Added new map cache options to
SDKOptions
with SDKOptions.cacheSizeInBytes
and SDKOptions.persistentMapStoragePath
. Also available as key in manifest (com.here.sdk.cache_size_in_bytes
, com.here.sdk.persistent_map_storage_path
) on Android or plist on iOS (CacheSizeInBytes
, PersistentMapStoragePath
). With this you can control where to store cached map data and it also allows to specify the amount of data you want to reserve for caching.
API Changes
- Changed
PedestrianOptions(routeOptions, textOptions)
constructor to PedestrianOptions(routeOptions, textOptions, 1.0)
to support the new PedestrianOptions.walkSpeedInMetersPerSecond
property (see above).
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - A
MapPolyline
may be unexpectedly rendered over a MapMarker
.
Version 4.5.3.0
New Features
- Added a
NoticeCode
that describes issues after a Route
was calculated. For example, when a route should avoid tunnels, but the only possible route needs to pass a tunnel, the Route
contains a notice that the requested avoidance of tunnels was violated. Therefore, it is recommended to always check a calculated Route
for possible violations. The NoticeCode
is part of a Notice
object. A list of possible Notice
objects can be accessed per Section
of a Route
. The list will be empty, when no violation occurred. - Addeded the ability to change the anchor point of a
MapMarker
with Anchor2D
. By default, the marker is centered on the provided location and the anchor is at (0.5, 0.5). An anchor represents a point in a rectangle as a ratio of the marker's image width and height. - Added search for a
CategoryQuery
within a GeoCircle
or GeoBox
. Extended the existing CategoryQuery
constructors to accept GeoCircle
or GeoBox
. Note that this feature is currently in BETA state.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - A
MapPolyline
may be unexpectedly rendered over a MapMarker
.
Version 4.5.2.0
Highlights
- Added suppport for scooter route calculation with the new
ScooterOptions
. Note that this is a BETA feature. Using scooter routes for navigation is not yet supported.
New Features
- Added new read-only property to
MapPolyline
with GeoPolyline get geometry
. - Added
DashPattern
class to set dashed line styles for a MapPolyline
. - Added a new property to
MapPolyline
to add support for fill colors when using dashed lines: ui.Color get dashFillColor
set dashFillColor(ui.Color value)
- Added cumulative orbit method to
MapCamera
to rotate the map around arbitrary view coordinates using relative orientation values with orbitBy(MapCameraOrientationUpdate delta, Point2D origin)
.
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
LocationUpdateListener
. Use the new LocationListener
instead. - Removed deprecated
GeoCircle
constructor that accepts single precision float type for radius.
Resolved Issues
- Fixed: Embedded POI markers are not visible for the hybrid night map scheme.
- Fixed: Pan gestures may receive a cancel event before a begin event.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account.
Version 4.5.1.0
Highlights
- Improved cold startup time on certain devices like Samsung.
New Features
- Introduced
Maneuver.lengthInMeters()
property to return the length of the maneuver. - Added new
MapCameralimits
with set targetArea(GeoBox value)
and GeoBox get targetArea
. This allows to set a target area preventing a user from moving away too much from a desired area of interest. - Added new
MapCameralimits
for bearing with AngleRange get bearingRange
and set bearingRange(AngleRange value)
. - Introduced
SectionTransportMode
enum and Section.getSectionTransportMode
method returning an instance of this type indicating now transport modes such as ferries. Section.getTransportMode
has been deprecated, use the newly introduced method instead. - Search: Introduced
SupplierReference
type and Details.references
property, which holds the list of supplier references to a place.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - Embedded POI markers are not visible for the hybrid night map scheme.
- Pan gestures may receive a cancel event before a begin event.
Version 4.5.0.0
Highlights
- Added route calculation for electric vehicles (EV). It's now possible to calculate the energy consumption per route section according to the given consumption model (supported for electric cars and trucks). Charging stations are automatically added to the calculated route as waypoints to ensure that the electric vehicle doesn't run out of energy along the way (supported for electric cars).
New Features
- Added
LogAppender
interface to insert your own log class into the SDKNativeEngine
. This way you can log HERE SDK messages for various predefined log levels even on release builds. - Added a
scale
property to change the size of a MapMarker3D
. - Added camera tilt limits with
MapCameraLimits.setMaxTilt(double degreesFromNadir)
and MapCameraLimits.setMinTilt(double degreesFromNadir)
. - Added camera zoom limits with
MapCameraLimits.setMaxZoomLevel(double zoomLevel)
and MapCameraLimits.setMinZoomLevel(double zoomLevel)
. - Added new methods to calculate routes for electric vehicles (car and trucks are supported):
RoutingEngine.calculateRoute(List<Waypoint>, EVCarOptions, CalculateRouteCallback)
, RoutingEngine.calculateRoute(List<Waypoint>, EVTruckOptions, CalculateRouteCallback)
. - Added the following classes and fields to support EV routing (see above):
-
BatterySpecifications
- parameters that describe the electric vehicle's battery. -
ChargingConnectorAttributes
- details of the connector that is suggested to be used for charging. -
ChargingConnectorType
- enumeration of the available charging connector types. -
ChargingStation
- charging station data. -
ChargingSupplyType
- enumeration of available charging supply types. -
EVCarOptions
- options to specify how a route for an electric car should be calculated. -
EVConsumptionModel
- parameters specific for the electric vehicle, which are used to calculate energy consumption on a given route. -
EVDetails
- additional information that is available for electric vehicles. -
EVTruckOptions
- options to specify how a route for an electric truck should be calculated. -
PostActionType
- enumeration of available post action types. -
PostAction
- an action that must be done after arrival. -
RoutePlaceType
- shows whether the place on the route (such as departure or arrival) is a charging station or a regular place. -
Arrival.type
- the type of the arrival place. -
Arrival.chargeInKilowattHours
- battery charge at arrival. -
Arrival.chargingStation
- charging station data at arrival. -
Departure.type
- the type of the departure place. -
Departure.chargeInKilowattHours
- battery charge at departure. -
Departure.chargingStation
- charging station data at departure. -
Section.postActions
- actions that must be done after the arrival. -
Section.evDetails
- additional section information that is available for electric vehicles.
API Changes
- The minimum supported iOS version was increased from 12.0 to 12.4.
- For custom map styles HERE Style Editor 0.26 is required.
- Changed splash screen to be grey instead of black. This improves the experiences on devices where cold start takes longer.
- Removed a deprecated
GeoCoordinates
constructor, use the previously introduced counterpart instead. - Removed a deprecated
Anchor2D
constructor, use the previously introduced counterpart instead.
Resolved Issues
- Fixed: After orientation changes coordinate conversions may return incorrect values.
- Fixed: A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - 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: Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
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. - Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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. - After orientation changes coordinate conversions may return incorrect values.
Version 4.4.5.0
New Features
- Added
set image(MapImage mapImage)
and MapImage get image
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
void zoomTo(double zoomLevel)
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 GeoBox.containingGeoCoordinates(List<GeoCoordinates> geoCoordinates)
to construct a GeoBox
from a list of Geocoordinates
. - A
CategoryQuery
can now be created from a single PlaceCategory
with the additional constructor CategoryQuery.withCategoryAndFilter(PlaceCategory category, String filter, GeoCoordinates areaCenter)
.
Resolved Issues
- Fixed: In rare cases map tiles may flicker when a device is offline and the cache is used.
Known Issues
- The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. - On iOS devices,
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
-
targetSdkVersion
and compileSdkVersion
of the internal AndroidManifest
used by the HERE SDK have been updated from 28 to 29. -
here.sdk.Color
was removed, use dart.ui.color
instead.
Resolved Issues
- Fixed an issue with flickering street labels after credentials have been changed.
- Fixed issue with empty IDs for reverse geocoding results: IDs of place results are no longer empty strings and contain now a valid ID.
- Route calculation: When no truck route is found due to incompatible truck restrictions, the reason is now logged and
RoutingError.noRouteFound
error is returned. For example, a log may contain: "Potential route would violate truck restriction:{"maxHeight":400}".
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- In rare cases map tiles may flicker when a device is offline and the cache is used.
Version 4.4.3.0
Highlights
- Kinetic map panning behavior was greatly improved. Now, when swiping the map moves slower which results in a more natural feel.
- Certain areas can now be excluded from route calculation with
AvoidanceOptions
that contain an avoidAreas
list holding GeoBox
items which routes should not cross.
New Features
- Added optional
Suggestion.getHref()
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.
API Changes
- The
AvoidanceOptions(avoidFeatures, avoidCountries)
constructor was extended to allow a list of GeoBox
items as 3rd parameter.
Resolved Issues
- Fixed: When the pick radius for
pickMapItems()
is set to 1000 or higher, an app may crash when picking map polylines. - Fixed:
SearchEngine
: Place.getId()
is empty for reverse geocoding results.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
- In rare cases map tiles may flicker when a device is offline.
Version 4.4.2.0
New Features
- Added
Place.geoCoordinates
to get the GeoCoordinates
of a Place
. Note that only Place
instances retrieved from a Suggestion
result may not contain geographic coordinates, hence the returned value is optional. - Added departure/arrival information to the
Section
of a Route
: - Added
Departure
class with the following fields: waypointIndex
originalCoordinates
mapMatchedCoordinates
- Added
Arrival
class with the following fields: waypointIndex
originalCoordinates
mapMatchedCoordinates
- Added
Section.departure
property. - Added
Section.arrival
property.
- Added
Suggestion.getType()
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. - When the pick radius for
pickMapItems()
is set to 1000 or higher, an app may crash when picking map polylines. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
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.getTrafficSpeeds()
method returns a list of TrafficSpeeds
's which covers the Section
polyline. - Added
SearchError.QUERY_TOO_LONG
and SearchError.FILTER_TOO_LONG
. These errors will appear if the search query or search filter is too long (over 300 characters). - Added
Route.getTransportMode()
which returns the original TransportMode
as requested for the route calculation.
Resolved Issues
- Fixed: Fixed memory leaks caused by
PlatformThreading
on Android platform.
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. - When the pick radius for
pickMapItems()
is set to 1000 or higher, an app may crash when picking map polylines. - For places that are obtained from the
Suggestion
class, the geographic coordinates always contain a latitude
and a longitude
equal to 0. An additional places request is needed to obtain the coordinates. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- Flutter's hot restart feature does not work when the map is moved. This results in an application freeze.
Version 4.4.0.2
Highlights
- New map schemes have been introduced to support satellite images together with vector-based street labels:
hybridDay
and hybridNight
.
New Features
- Added to the
MapCamera
class the method: setTargetOrientation(MapCameraOrientationUpdate orientation)
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: -
set drawOrder(int value)
to set the DrawOrder
for a MapPolyline
. -
int get drawOrder
to get the DrawOrder
for a MapPolyline
. -
set width(double value)
to set the LineWidth
for a MapPolyline
. -
double get width
to get the LineWidth
for a MapPolyline
. -
set outlineWidth(double value)
to set the OutlineWidth
for a MapPolyline
. -
double get outlineWidth
to 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.withCorridorAreaAndAreaCenter(String query, GeoCorridor corridorArea, GeoCoordinates 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.withFilterAndCorridorArea(List<PlaceCategory> categories, String filter, GeoCorridor corridorArea)
and without the filter
parameter CategoryQuery.withCorridorArea(List<PlaceCategory> categories, GeoCorridor corridorArea)
to enable category search along a route. This feature is in BETA state. - Added to the
Details
class the method: List<PlaceCategory> getPrimaryCategories()
to get a place category from the result of a search query.
Resolved Issues
- Fixed issue with hot restart not working correctly. Now, the hot restart functionality is working properly without the need to restart the app.
- 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.
- Fixed issue with non-working gestures after a map view is recreated.
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. - 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
- With this release, it is no longer necessary to request the sensitive Android
EXTERNAL_STORAGE
permission from users. See the related API change 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 following properties
LineCap get lineCap
and set lineCap(LineCap value)
to get and set the LineCap
of a MapPolyline
.
API Changes
- Removed the
android.permission.READ_EXTERNAL_STORAGE
and android.permission.WRITE_EXTERNAL_STORAGE
permissions from the SDK's Android manifest file. - Internally, the HERE SDK switched from "UpperCamelCase" to "snake_case". This has no effect on the public API, but if you have the HERE SDK plugin folder under source control, please make sure to enable case sensitivity - otherwise these naming changes will be ignored when committing the folder.
Resolved Issues
- Fixed: Error when loading a SVG file into a
MapImage
. Now, SVG files that are stored in the assets directory can be loaded into a MapImage
with the method MapImage.withFilePathAndWidthAndHeight("assets/my_svg_image.svg", 100, 100)
(call example).
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - Rendering order for
MapMarker3D
is not yet supported, so the marker may appear below building footprints.
Version 4.3.3.0
New Features
- Added the ability to get and set the primary language of the map using a static property
HereMapController.primaryLanguage
.
API Changes
- Renamed
HereMapController.pins
to HereMapController.widgetPins
.
Resolved Issues
- Fixed: App crashes when access to memory storage is denied. Now, access to the memory storage is granted by setting the path to the map cache.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - Rendering order for
MapMarker3D
is not yet supported, so the marker may appear below building footprints. - Error when loading a SVG file into a
MapImage
.
Version 4.3.2.0
Highlights
- The minimum supported Flutter version was raised to 1.17 or newer.
New Features
- Added support for map widget pins: Added
mapController.pinWidget(widget, coords)
and mapController.pinWidget(widget, coords, anchor: anchor)
to add the map widget pins with and without an anchor point. Use mapController.unpinWidget(widget)
to remove a map widget pin. - Added the method
MapCamera.getBoundingBox()
to get the currently visible map area encompassed in a GeoBox
. - Added the method
MapCamera.setDistanceToTarget(double distanceInMeters)
to set the distance from the MapCamera
to the target location on earth. - 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 methods
MapView.setPrimaryLanguage(LanguageCode languageCode)
and MapView.getPrimaryLanguage()
to set and get the primary language of the map. - Added updated support for the
SDKOptions.cachePath
handling. If SDKOptions.cachePath
is not set, it will be assigned a default path. A custom cachePath
can be set in the app's manifest (Android) or Plist (iOS).
Resolved Issues
- Fixed: The
Authentication
callback was not always called on the main thread. Now the callback is guaranteed to be always called on the main thread. - Fixed: Android apps may crash when an app is closed with the back button.
- Fixed app crash in some scenarios when
MapView.onDestroy
is called twice.
Known Issues
-
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. - Error when loading a SVG file into a
MapImage
.
Version 4.3.1.0
API Changes
- Renamed
MapView
to HereMapController
. - Changed
callback
name for the method HereMap(onMapViewCreated: (MapView mapView) {mapView.loadSceneForMapScheme(...);})
to HereMap(onMapCreated: (MapView mapView) {mapView.loadSceneForMapScheme(...);})
.
Resolved Issues
- Fixed:
AvoidanceOptions
will be ignored when calculating truck routes. Now, AvoidanceOptions
are considered when calculating truck routes.
Known Issues
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - Android apps may crash when an app is closed with back button. Restarting again will work.
- Rendering order for
MapMarker3D
is not yet supported, so the marker may appear below building footprints.
Version 4.3.0.0
Highlights
- This is the initial release.
Known Issues
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. -
AvoidanceOptions
will be ignored when calculating truck routes. - Transparency for
MapPolylines
is not supported.