Release Notes
We are pleased to announce the availability of version 4.9.4.0 (Explore Edition) of the new HERE SDK for Android.
This is a stable release. We are constantly working on new features, stabilizing APIs, improving our KPIs, and evaluating your feedback.
Changes
This section documents major changes to this release that may require you to update your applications.
Version 4.9.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
. - 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.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - 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.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
.
Changes from Previous Releases
This section documents major changes from past releases. We encourage you to use the latest release, 4.9.4.0.
Version 4.9.3.0
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. -
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.
Version 4.9.2.0
New Features
- Added
LocationIndicator.updateLocation(Location location, MapCameraUpdate cameraUpdate)
to update the location of the indicator and the target coordinates of the MapView
at the same time - for example, when tracking the user's location. - Offline Routing: Enabled a property for
RouteOptions
that allows to set an upper limit of the driving speed of a vehicle: speedCapInMetersPerSecond
is available for car and truck transport modes. It can affect route path and ETA. Note that this property was already available for online routing. - Added a feature to observe when a
MapCamera
animation or flyTo()
-call has been completed: Added AnimationListener
interface, AnimationState
enumeration and MapCamera.startAnimation()
. - Added a feature to pick embedded carto POIs. By default, embedded POIs are visible on the map and they can be picked now via
mapView.pickMapFeatures()
to get a PickMapFeaturesResult
that contains a PoiResult
. Check the Developer's Guide for a usage example. - Added a convenience feature to tie a
LocationIndicator
directly to the MapView
's life cycle'. For example, be calling the new enable()
method, the LocationIndicator
is visible on the map. This has the same affect as when calling mapView.addLifecycleDelegate(locationIndicator)
. Added constructor LocationIndicator(@NonNull final MapViewBase mapView)
, added methods LocationIndicator.enable(@NonNull final 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.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - 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. - 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
VEHICLE_RESTRICTIONS
is currently ignored and the layer is not visible. - Picking map features such as embedded POIs and map items via
mapView.pickMapItems
and mapView.pickMapFeatures
is currently not possible at the same time.
Version 4.9.1.0
New Features
- Added
removeMapMarkers()
method to MapScene
class. It removes multiple map markers in a batch call.
API Changes
- Removed deprecated tag for
PERSISTENT_MAP_STORAGE_FOLDER_ACCESS_DENIED
. PERSISTENT_MAP_STORAGE_FOLDER_ACCESS_DENIED
is not deprecated anymore. - Deprecated
MapCamera.FlyToOptions.durationInMs
, use MapCamera.FlyToOptions.duration
instead.
Resolved Issues
- Fixed: Route imports no longer fail when
Location.time
is set. - 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. -
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. -
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.TRAFFIC_FLOW
and MapScene.Layers.TRAFFIC_INCIDENTS
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
VEHICLE_RESTRICTIONS
is currently ignored and the layer is not visible.
Version 4.9.0.0
New Features
- Added new animation features to
MapCamera
with startAnimation(MapCameraAnimation)
, EasingFunction
and KeyframeInterpolationMode
. Added related classes GeoCoordinatesKeyframe
, GeoOrientationKeyframe
, Point2DKeyframe
, ScalarKeyframe
, MapCameraAnimation
, MapCameraAnimationFactory
and MapCameraKeyframeTrack
. - Routes can now be imported: Added
routingEngine.importRoute()
to import a route from a list of GeoCoordinates
and RouteOptions
. - Added support for map marker clustering with the new classes
MapMarkerCluster
and MapMarkerCluster.ImageStyle
. A marker cluster can be added/removed with MapScene.addMapMarkerCluster()/MapScene.emoveMapMarkerCluster
. See the MapItems example app for a usage example. - 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 constructor in
Location
class. Use one of the other available contructors instead. - Removed the previously deprecated
MapRepresentable
interface and addMapRepresentable
and removeMapRepresentable
methods from MapView
and MapSurface
. 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.getNotices()
method. 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
OPTION_NOT_AVAILABLE
value from the SearchError
enum. It was replaced by the SearchError.INVALID_PARAMETER
value. - Removed the previously deprecated
GREY_DAY
and GREY_NIGHT
from MapScheme
enum. Use the normal map scheme variants instead. - Deprecated field
timestamp
in Location
class, please use the newly introduced time
field instead.
Resolved Issues
- Fixed Chinese fonts that have been displayed accidentially for Japan labels.
- Fixed: Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. -
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.TRAFFIC_FLOW
and MapScene.Layers.TRAFFIC_INCIDENTS
may not be instantly visible when starting an app for the first time.
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()
. - Added support for Android Auto. Now it's possible to render the
MapView
onto a provided surface with the newly added class MapSurface
. - Search: Added
ResponseDetails
as result type that provides the requestId
of a search request and a correlationId
to identify multiple, related queries. - Routing: Added a static
fromString
method to SegmentReference
to generate instances of this class from a well-formatted String. Usually, SegmentReference
instances are only accessible from the Span
of a Route
's Segment
.
API Changes
- Routing: For the new toll cost API, now the newly added
RouteOptions.enableTolls
flag must be set to get toll costs. It is set to false
by default. When this flag is enabled, toll data is requested for toll applicable transport modes.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.8.3.0
New Features
- Public transit routes: Added support for new
PEDESTRIAN
sections to provide better information on in-station walks, for example, when walking from a place of type ACCESS_POINT
type to a place of type STATION
. - Routing: Added
RouteOptions.enableTrafficOptimization
field 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. - Added
VIOLATED_AVOID_SEASONAL_CLOSURE
, VIOLATED_AVOID_TOLL_TRANSPONDER
, SEASONAL_CLOSURE
, TOLL_TRANSPONDER
, TOLLS_DATA_UNAVAILABLE
and CHARGING_STOP_NOT_NEEDED
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.VIOLATED_PEDESTRIAN_OPTION
symbol. It will be removed in v4.11.0 as it is no longer supported. - Deprecated
PERSISTENT_MAP_STORAGE_FOLDER_ACCESS_DENIED
and FAILED_TO_LOCK_PERSISTENT_MAP_STORAGE_FOLDER
values from the InstantiationErrorCode
enum. The persistent storage directory is no longer locked.
Resolved Issues
- Fixed: It is not possible to set both
RouteOptions.departureTime
and RouteOptions.arrivalTime
at the same time. Plus, RouteOptions.arrivalTime
is ignored when RouteOptions.enableTrafficOptimization
is set to false.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
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
classes and Section.getTolls()
method. Note: This is a beta feature.
Resolved Issues
- Fixed: In rare cases,
Storage.LevelDB
related crashes can occur when starting the app.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.8.1.0
New Features
- Routing: Added
NoRouteHandle
enum value to RoutingError
to indicate that the route did not contain the required RouteHandle
, which is needed, for example, to refresh a route. - Search: Added new
name
property to PlaceCategory
that provides a level 3 description.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases,
Storage.LevelDB
related crashes can occur when starting the app.
Version 4.8.0.0
API Changes
- Deprecated
MapCamera.Orientation
- replaced with GeoOrientation
. - Deprecated
MapCamera.OrientationUpdate
- replaced with GeoOrientationUpdate
. - Deprecated
MapCamera.State.targetOrientation
- replaced with MapCamera.State.orientationAtTarget
. - Deprecated
MapCamera.flyTo(GeoCoordinates target, MapCamera.OrientationUpdate orientation, double distanceInMeters, MapCamera.FlyToOptions animationOptions)
- replaced with MapCamera.flyTo(GeoCoordinates target, GeoOrientationUpdate orientation, MapCamera.FlyToOptions animationOptions)
. - Deprecated
MapCamera.flyTo(GeoCoordinates target, MapCamera.OrientationUpdate orientation, MapCamera.FlyToOptions animationOptions)
- replaced with MapCamera.flyTo(GeoCoordinates target, MapCamera.OrientationUpdate orientation, MapCamera.FlyToOptions animationOptions)
. - Deprecated
MapCamera.flyTo(GeoCoordinates target, MapCamera.OrientationUpdate orientation, MapCamera.FlyToOptions animationOptions)
- replaced with MapCamera.lookAt(GeoBox target, GeoOrientationUpdate orientation)
. - Deprecated
MapCamera.lookAt(GeoCoordinates target, MapCamera.OrientationUpdate orientation, double distanceInMeters)
- replaced with MapCamera.lookAt(GeoCoordinates target, MapCamera.OrientationUpdate orientation, double distanceInMeters)
. - Deprecated
MapCamera.orbitBy(MapCamera.OrientationUpdate delta, Point2D origin)
- replaced with MapCamera.orbitBy(GeoOrientationUpdate delta, Point2D origin)
. - Deprecated
MapCamera.setTargetOrientation(MapCamera.OrientationUpdate orientation)
- replaced with MapCamera.setOrientationAtTarget(GeoOrientationUpdate orientation)
. - Deprecated
MapCamera.setOrientationAtTarget(GeoOrientationUpdate orientation)
- replaced with MapCamera.lookAt(GeoBox target, GeoOrientationUpdate orientation, Rectangle2D viewRectangle)
. - Removed the previously deprecated
updateGeometry()
methid from MapPolyline
and MapPolygon
. - Search: Removed previously deprecated fields in
Contact
: emailAddresses
, landlinePhoneNumbers
, mobilePhoneNumbers
, websiteAddresses
. - Routing: Removed the previously deprecated
Arrival
and Departure
classes.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases,
Storage.LevelDB
related crashes can occur when starting the app.
Version 4.7.7.0
New Features
- Search: Added
politicalView
member to Place
class. The optional value can be checked if it is matching the one that was set beforehand via SDKOptions
.
API Changes
- The map styles for
NORMAL_DAY
, NORMAL_NIGHT
, HYBRID_DAY
and HYBRID_NIGHT
have been updated to the ones that have been made available as preview
beforehand. The new map styles feature a clean and neutral base map and a street network with improved gray scales that allow a better hierarchy of elements that can be added on top. -
MapView
: "Simplified Chinese", "Traditional Taiwan" and "Traditional Hong Kong" language labels are now supported. - Routing: Updated the API for the returnToRoute and refreshRoute feature for
RoutingEngine
: - Changed the parameter order of
RoutingInterface.returnToRoute()
: The startingPoint
parameter is now the second parameter, not the third parameter. The feature is still in beta. - Added a
startingPoint
parameter to the RoutingEngine.refreshRoute()
method. In return, deleted RefreshRouteOptions.updateStartingPoint()
. The feature is still in beta. - Deleted the ReturnToRouteEngine. Use the newly introduced
RoutingInterface.returnToRoute()
method instead.
Resolved Issues
- Fixed: A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. - Fixed: When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - In rare cases, when an app is started a cache lock error indicated by
InstantiationErrorCode.FAILED_TO_LOCK_CACHE_FOLDER
or InstantiationErrorCode.FAILED_TO_LOCK_PERSISTENT_MAP_STORAGE_FOLDER
can happen when another app process is locking the map cache. At the moment, this can only be resolved by reinstalling the app or by calling InitProvider.destroyLockingProcess(sdkOptions, timeoutInMs)
before initializing the HERE SDK.
Version 4.7.6.0
New Features
- Improved map rendering performance on low end devices.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets. - In rare cases, when an app is started a cache lock error indicated by
InstantiationErrorCode.FAILED_TO_LOCK_CACHE_FOLDER
or InstantiationErrorCode.FAILED_TO_LOCK_PERSISTENT_MAP_STORAGE_FOLDER
can happen when another app process is locking the map cache. At the moment, this can only be resolved by reinstalling the app or by calling InitProvider.destroyLockingProcess(sdkOptions, timeoutInMs)
before initializing the HERE SDK.
Version 4.7.5.0
New Features
- Routing: Added avoidance options for pedestrians with
PedestrianOptions.avoidanceOptions
. - Search: Added support to search along longer route polylines with a
GeoCorridor
. Either increase halfWidthInMeters
when set via constructor or do not set it - by using the GeoCorridor
constructor that only allows to set the GeoPolyline
. The parameter radiusInMeters
has been deprecated: Please only use halfWidthInMeters
as constructor parameter to specify the thickness of the route corridor. When increasing halfWidthInMeters
then a greater simplification of the polyline shape can be achieved resulting in a longer route that can be searched along. On the downside the results are less accurate and can lie farther away from the route. When halfWidthInMeters
is not set, a suitable value is set internally based on "best guess". - The
LocationIndicator
now supports a gray state that can be set via LocationIndicator.isActive(boolean)
.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message. - When
MapMarker.setOverlapAllowed()
is set to false and the map is zoomed, this can lead to a flickering of the marker assets. - In rare cases, when an app is started a cache lock error indicated by
InstantiationErrorCode.FAILED_TO_LOCK_CACHE_FOLDER
or InstantiationErrorCode.FAILED_TO_LOCK_PERSISTENT_MAP_STORAGE_FOLDER
can happen when another app process is locking the map cache. At the moment, this can only be resolved by reinstalling the app.
Version 4.7.4.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. -
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
New Features
- Routing: Added support for
EVCarOptions
and EVTruckOptions
for the RefreshRouteOptions
class. - EV Routing: Added new parameters to
BatterySpecifications
: -
minChargeAtChargingStationInKilowattHours
: The minimum charge when arriving at a charging station. -
minChargeAtDestinationInKilowattHours
: The minimum charge at the final route destination. -
maxChargingVoltageInVolts
: The maximum charging voltage supported by the vehicle's battery. -
maxChargingCurrentInAmperes
: The maximum charging current supported by the vehicle's battery. -
chargingSetupDurationInSeconds
: The time spent after arriving at a charging station, but before actually charging.
-
SearchEngine
: For reverse geocoding it is now possible to search in a GeoCircle
with search(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. -
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
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.get/setFrameRate()
. This can be useful to reduce CPU usage for low end devices. The default FPS is 60 frames per second. It is also possible to deactivate automatic render cycles by setting FPS to 0.
Resolved Issues
- Fixed:
MapMarker3D
instances are only partly rendered when the camera is positioned too far from earth.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.7.1.0
Highlights
- Added a default 3D
LocationIndicator
to show the current location and travel direction of a user. It can be added to the map view with MapView.addMapLifecycleListener()
. Update its location via Mapview.updateLocation()
that accepts a Location
as parameter. The look of the default asset can be customized by setting a MapMarker3DModel
as parameter to LocationIndicator.setMarker3dModel()
. You can also specify the MarkerType
: In the future, it may be used to enable different styles of markers for different use cases.
New Features
- Introduced taxi routes. Added
TransportMode.TAXI
type and a TaxiOptions
class to calculate routes optimized for taxis via RoutingEngine.calculateRoute()
. Note: This is a beta release of this transport mode, so there could be a few bugs and unexpected behaviors. - Routing: Added
RouteOptions.speedCapInMetersPerSecond
to limit the maximum allowed speed for a vehicle. When set, the route duration will be shorter for car and truck transport modes. For scooter routes it may also affect the route geometry. Other transport modes are ignored.
Resolved Issues
- Fixed: Public transit routes do not contain maneuvers.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. -
MapMarker3D
instances are only partly rendered when the camera is positioned too far from earth. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.7.0.0
Highlights
- Introduced public transit routing with a new
TransitRoutingEngine
that can calculate public transit routes. It uses TransitWaypoint
type waypoints and a TransitRouteOptions
class to specify various transit related options. Note that the API is in an early development stage. More features and overall stabilization are planned for the next releases.
New Features
- Along with the newly introduced
TransitRoutingEngine
(see above), the following supportive types have been added: AttributionType
enum, FarePriceType
enum, FareReason
enum, PreActionType
enum, TransitDepartureStatus
enum, TransitIncidentType
enum, TransitIncidentEffect
enum, TransitMode
enum, TransitModeFilter
enum, Agency
class, Attribution
class, Fare
class, FarePrice
class, PreAction
class, TransitIncident
class, TransitDeparture
class, TransitSectionDetails
class, TransitStop class, and TransitTransport
class. - Routing: Introduced a new
Span
class that is accessible from a Section
on a Route
. It points to the related section notices to indicate possible route violations. With the Span
class these violations can now be identified on the Route
as they contain the length in meters and the geometry. - Routing: Added additional constructor for
IsolineOptions.Calculation
: IsolineOptions.Calculation(@NonNull final IsolineRangeType rangeType, @NonNull final List<Integer> rangeValues, @NonNull final 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
com.here.sdk.core.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. -
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.getSectionNotices()
method to get informed on possible route violations. - Isoline Routing:
- Added
RoutePlaceDirection
enum with values ARRIVAL
and DEPARTURE
. - Added
isolineDirection
field inside IsolineOptions.Calculation
structure (with default value of RoutePlaceDirection.DEPARTURE
) - Extended the existing
IsolineOptions.Calculation
constructor to accept the new RoutePlaceDirection
enum. - Added
RouteOptions.arrivalTime
to set an optional time when a travel is expected to end. Note that this parameter is currently only supported for isoline route calculation.
API Changes
- Routing: Deprecated the
Notice
class and NoticeCode
enum along with Section.getNotices()
method, use the newly introduced SectionNoticeCode
, SectionNotice
class and Section.getSectionNotices()
method instead. - Search: Deprecated
SearchError.OPTION_NOT_AVAILABLE
enum value, it will be replaced by the existing SearchError.INVALID_PARAMETER
value.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances 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: flyTo(@NonNull GeoCoordinates target, double distanceInMeters, @NonNull MapCamera.FlyToOptions animationOptions)
. - New map styles have been introduced as beta versions.
- The map styles for
NORMAL_DAY
, NORMAL_NIGHT
, HYBRID_DAY
and HYBRID_NIGHT
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
NORMAL_DAY
in v4.8.0. - "preview.normal.night.json" - This scheme will update the current
NORMAL_NIGHT
in v4.8.0. - "preview.hybrid.day.json" - This scheme will update the current
HYBRID_DAY
in v4.8.0. - "preview.hybrid.night.json" - This scheme will update the current
HYBRID_NIGHT
in v4.8.0.
- The legacy map styles for
NORMAL_DAY
, NORMAL_NIGHT
, HYBRID_DAY
and HYBRID_NIGHT
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.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - A
Maneuver.polyline
list of GeoCoordinates
has only one element for the last maneuver of a route. -
MapMarker3D
instances are only partly rendered when the camera is positioned too far from earth. - The
jamFactor
indicating TrafficSpeed
is currently calculated linear without taking road types and other parameters into account. - The opening hours for a
Place
that closes after midnight end at midnight. - An inner city
Route
for trucks carrying dangerous goods may not result in an error message.
Version 4.6.3.0
New Features
- Added new
WatermarkStyle
enum that defines the style of the HERE watermark logo. The dark watermark should be used for custom styles that are brighter (like daytime) and the light watermark for darker custom schemes (like night or satellite based). Added a new loadScene()
method to MapScene
to accept the new enum together with a custom style. -
MapCamera
: Added FlyToOptions
to customize the fly-to animation from current target GeoCoordinates
to a new location. The durationInMs
parameter defines how long the animation will run, the bowFactor
defines a relative camera height for the ballistic curve that ranges from -1 < 0 (concave curve) to 0 (constant height) to 0 < 1 (convex curve). The maximum height can be achieved with a bowFactor
of 1, the minimum with -1. Note that the height is relative to the distance between current target and new target to achieve a constant look regardless of the current zoom level. - Routing: Added
sideOfStreetHint
property to Waypoint
. These optional GeoCoordinates
indicate which side of the street should be used to reach the waypoint. For example, if the location is to the left of the street, the route will prefer using that side in case the street has dividers. Hence, if the street has no dividers, sideOfStreetHint
is ignored.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances 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
New Features
- Introduced beta versions of new map style combinations for use with
MapScene.loadScene()
: "preview.normal.day.json", "preview.normal.night.json", "preview.hybrid.day.json" and "preview.hybrid.night.json". - Added new map item type:
MapArrow
elements can now be rendered on the map to indicate a direction. They can be added or removed like other map items via MapScene
. -
MapMarker
items can now be made invisible once they overlap each other at certain zoom levels. They contain a new property with isOverlapAllowed()
and setOverlapAllowed(boolean)
.
API Changes
- The free flow traffic layer is now rendering green traffic flow lines by default.
Resolved Issues
- Fixed: When traffic flows are enabled, map gestures may behave slower than expected.
- Fixed: When
SDKOptions
is created before initialization of SDKNativeEngine
it may contain a corrupted path.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances 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.
API Changes
- Routing: The
AvoidanceOptions
constructor requires to set the new field zoneCategories
. - Routing: Deprecated
Section.getDeparture()
and Section.getArrival()
. Instead, use the newly introduced Section.getDeparturePlace()
and Section.getArrivalPlace()
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.HTTP_ERROR
when searching in a circle, whose radius is a number with a fraction.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances 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
- 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 void lookAt(@NonNull final GeoBox target, @NonNull final MapCamera.OrientationUpdate orientation, @NonNull final 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. -
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.
- Searching for a
CategoryQuery
within a GeoCircle
or GeoBox
is no longer marked as a beta feature.
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. - 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
). 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.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - 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. -
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 getGeometry()
. - Added
DashPattern
class to set dashed line styles for a MapPolyline
. - Added the following methods to
MapPolyline
to add support for fill colors when using dashed lines: Color getDashFillColor()
void setDashFillColor(@Nullable Color value)
- Added cumulative orbit method to
MapCamera
to rotate the map around arbitrary view coordinates using relative orientation values with orbitBy(@NonNull MapCamera.OrientationUpdate delta, @NonNull 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. -
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
- Added new
MapCameralimits
with void setTargetArea(@Nullable GeoBox value)
and @Nullable GeoBox getTargetArea()
. 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 void setBearingRange(@NonNull AngleRange value)
and @NonNull AngleRange getBearingRange()
. - Introduced
Maneuver.getLengthInMeters()
method to return the length of the maneuver. - 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.
Resolved Issues
- Fixed: Operations on
MapCamera
(lookAt()
, zoomBy()
,...) can now be executed already during onCreate()
and onResume()
calls. They will be enqueued and executed after MapView
is fully created and functional.
Known Issues
- Updating an existing
MapMarker
with a completely new image causes the marker to disappear for a brief moment before being drawn with the new image. - The newly introduced zoom level behaves inconsistent across different devices as the shown level of detail depends on the physical screen size of a device.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. -
MapViewPin
instances cannot be removed after tilting and panning the map. - 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
heresdk-explore-mock-<version>.jar
to release package to enable easy mocking of HERE SDK classes for Unit Tests, check the new UnitTesting example app to see how to use it in your own tests. - 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
void MapCameraLimits.setMaxTilt(double degreesFromNadir)
and void MapCameraLimits.setMinTilt(double degreesFromNadir)
. - Added camera zoom limits with
void MapCameraLimits.setMaxZoomLevel(double zoomLevel)
and void 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
- 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. - Changed the following methods in
MapMarker
: -
Long getDrawOrder()
to Integer getDrawOrder()
. -
void setDrawOrder(Long drawOrder)
to void setDrawOrder(Integer drawOrder)
.
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. -
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. - After orientation changes coordinate conversions may return incorrect values.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. -
MapViewPin
instances 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.
Version 4.4.5.0
New Features
- Added
void setImage(@NonNull MapImage mapImage)
and MapImage getImage()
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.containing(@NonNull 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(@NonNull PlaceCategory category, @NonNull String filter, @NonNull 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. - After orientation changes coordinate conversions may return incorrect values.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- A category search along a route will crash when the
GeoCorridor.polyline
list parameter is empty. -
MapViewPin
instances 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.
Deprecated
- A few methods, fields and constructors of class
here.sdk.Color
have been deprecated. Instead, use the new methods that have been introduced to the class to conform to Android's native Color
class. The new factory methods and getters use a color component of type float
with the interval [0,1] - instead of type short
and [0,255] that was used for the deprecated components.
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.NO_ROUTE_FOUND
error is returned. For example, a log may contain: "Potential route would violate truck restriction:{"maxHeight":400}".
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Transparency for
MapPolylines
is not supported. - After orientation changes coordinate conversions may return incorrect values.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- In rare cases map tiles may flicker when a device is offline and the cache is used.
Version 4.4.3.0
Highlights
- Kinetic map panning behavior was greatly improved. Now, when swiping the map moves slower which results in a more natural feel.
- Certain areas can now be excluded from route calculation with
AvoidanceOptions
that contain an avoidAreas
list holding GeoBox
items which routes should not cross.
New Features
- Added optional
Suggestion.getHref()
to get a direct link to discover more details. It is available when the suggestion result type is category or chain. - Added
RoadFeatures.DIFFICULT_TURNS
enum value. Note that it is valid only for truck transport mode. - Added
MapError.INVALID_STATE
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. - After orientation changes coordinate conversions may return incorrect values.
- Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
- In rare cases map tiles may flicker when a device is offline.
Version 4.4.2.0
New Features
- Added
Place.getGeoCoordinates()
method 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.get_departure()
method. - Added
Section.get_arrival()
method.
- 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.getCoordinates()
method, use Place.getGeoCoordinates()
instead. Note that only Place
instances retrieved from a Suggestion
result may not contain geographic coordinates, hence the returned value has become optional.
Resolved Issues
- Fixed: When the
Route
used to search along the route is too long, now a proper error is returned with SearchError.ROUTE_TOO_LONG
. - Fixed: For places that are obtained from the
Suggestion
class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - After orientation changes coordinate conversions may return incorrect values.
- When the pick radius for
pickMapItems()
is set to 1000 or higher, an app may crash when picking map polylines. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
Version 4.4.1.0
New Features
- Traffic flows can now be identified along a
Route
. Introduced TrafficSpeeds
class to provide traffic speed information over a Section
polyline. The Section.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
.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - After orientation changes coordinate conversions may return incorrect values.
- When the pick radius for
pickMapItems()
is set to 1000 or higher, an app may crash when picking map polylines. - For places that are obtained from the
Suggestion
class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates. - Map tiles may not load automatically when losing internet connectivity and connectivity gets back, unless the user interacts with the map.
Version 4.4.0.2
Highlights
- New map schemes have been introduced to support satellite images together with vector-based street labels:
HYBRID_DAY
and HYBRID_NIGHT
.
New Features
- Added to the
MapCamera
class the method: void setTargetOrientation(@NonNull MapCamera.OrientationUpdate 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: -
void setDrawOrder(int value)
to set the DrawOrder
for a MapPolyline
. -
int getDrawOrder()
to get the DrawOrder
for a MapPolyline
. -
void setLineWidth(double value)
to set the LineWidth
for a MapPolyline
. -
double getLineWidth()
to get the LineWidth
for a MapPolyline
. -
void setOutlineWidth(double value)
to set the OutlineWidth
for a MapPolyline
. -
double getOutlineWidth()
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(@NonNull String query, @NonNull GeoCorridor corridorArea, @NonNull 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(@NonNull List<PlaceCategory> categories, @NonNull String filter, @NonNull GeoCorridor corridorArea)
and without the filter
parameter CategoryQuery(@NonNull List<PlaceCategory> categories, @NonNull 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.
API Changes
- Reduced the rotation sensitivity of the
Pinch Rotate
gesture. Now, it is easier to zoom in on the map without rotating it. - Moved the
LocationProvider
and LocationListener
interfaces from the com.here.sdk.navigation
to the com.here.sdk.core
package.
Resolved Issues
- Fixed: Rendering order for
MapMarker3D
is not yet supported, so the marker may appear below building footprints. Now, the rendering order for MapMarker3D
is supported and the marker no longer appears below building footprints. - Fixed several rendering issues related to map items.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - After orientation changes coordinate conversions may return incorrect values.
- When the pick radius for
pickMapItems()
is set to 1000 or higher, an app may crash when picking map polylines. - For places that are obtained from the
Suggestion
class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.
Version 4.3.4.0
Highlights
- With this release it is no longer necessary to request the sensitive
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 methods
LineCap getLineCap()
and void setLineCap(@NonNull 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 manifest file.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - Rendering order for
MapMarker3D
is not yet supported, so the marker may appear below building footprints. - After orientation changes coordinate conversions may return incorrect values.
Version 4.3.3.0
New Features
- Added the method
search(@NonNull PlaceIdQuery query, @Nullable LanguageCode languageCode, @NonNull PlaceIdSearchCallback callback)
to perform an asynchronous request to search for a place based on its ID and language code. - Added the possibility to filter
AddressQuery
results by the CountryCode
with the method AddressQuery(@NonNull String query, @NonNull GeoCoordinates areaCenter, @NonNull List<CountryCode> countries)
. - Added the possibility to filter
TextQuery
results by the CountryCode
with the method TextQuery(@NonNull String query, @NonNull GeoCoordinates areaCenter, @NonNull List<CountryCode> countries)
. - Added the methods
getLineColor()
and void setLineColor(@NonNull Color value)
to get and set the LineColor
of a MapPolyline
. - Added the methods
getOutlineColor()
and void setOutlineColor(@NonNull Color value)
to get and set the OutlineColor
of a MapPolyline
.
Deprecated
- Deprecated the method
search(@NonNull PlaceIdQuery query, @NonNull PlaceIdSearchCallback callback)
. Use the newly introduced search(@NonNull PlaceIdQuery query, @Nullable LanguageCode languageCode, @NonNull PlaceIdSearchCallback callback)
method instead.
Resolved Issues
- Fixed: App crashes when access to memory storage is denied. Now, access to the memory is granted by setting the path to the map cache.
- Fixed: Heading is ignored during turn-by-turn navigation. Now, Waypoint heading is considered during turn-by-turn navigation.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Transparency for
MapPolylines
is not supported. - Rendering order for
MapMarker3D
is not yet supported, so the marker may appear below building footprints.
Version 4.3.2.0
New Features
- Added the
ManeuverProgress
class which is accessible from RouteProgress.maneuverProgress
to indicate progress details to the next and next-next maneuvers during navigation. - Added the method
MapCamera.getBoundingBox()
to get the currently visible map area encompassed in a GeoBox
. - Added the
ViewPin
class to display Android views at a fixed location on the MapView
with the methods: -
ViewPin pinView(@NonNull View view, GeoCoordinates coordinates)
to pin a view on the MapView
. -
void unpinView(@NonNull View view)
to remove a view pinned to the MapView
. -
List<ViewPin> getViewPins()
to get the views pinned on the MapView
.
- Added the method
void MapCamera.setDistanceToTarget(double distanceInMeters)
to set the distance from the MapCamera
to the target location on earth. - Added the methods
void MapView.setPrimaryLanguage(@Nullable 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 [Context.getCacheDir().getPath()
]. A custom cachePath
can be set in the app's manifest file via the "com.here.sdk.cache_path"
key.
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.
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. - Heading is currently ignored during turn-by-turn navigation.
Version 4.3.1.0
New Features
- Added the methods
MapMarker.getDrawOrder()
and MapMarker.setDrawOrder(final long value)
to get and set the draw order of MapMarkers
on the map. - Added
MapView.OnReadyListener
with the method Map.setOnReadyListener(OnReadyListener readyListener)
to set the ReadyListener
. The listener will notify once the map view has been initialization. - Added the support for
3D MapMarkers
with the classes MapMarker3D
and MapMarker3DModel
to represent and define a 3D shape rendered on the map. - Added the methods
void MapScene.addMapMarker3d(@NonNull MapMarker3D marker)
and void MapScene.removeMapMarker3d(@NonNull MapMarker3D marker)
to add and remove a 3D MapMarker
.
- Added the
Rectangle2D
constructor that accepts type double
for the origin and size parameters to represent a 2D rectangle. - Added the
Size2D
constructor that accepts type double
for the height and width parameters to represent the size of a 2D structure. - Added the methods
MapPolylines.getMetadata()
and void setMetadata(@Nullable Metadata value)
to get and set the Metadata for MapPolylines
.
Resolved Issues
- Fixed:
AvoidanceOptions
will be ignored when calculating truck routes. Now, AvoidanceOptions
are considered when calculating truck routes.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
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.0.0
New Features
- Added the
GeoCoordinates(double latitude, double longitude, double altitude)
constructor. - Added the
GeoCircle()
constructor that accepts type double
for the radius
parameter. - Added support for map circles: Added the
GeoPolygon(@NonNull GeoCircle geoCircle)
constructor, which can then be used to create a MapPolygon
that has the shape of a circle. - Added the
Anchor2D()
constructor that accepts type double
for the horizontal and vertical parameters. - Added the
MapView.getPixelScale()
method to get the pixel scale used by MapView
. - Added the
MapPolygon.updateGeometry(GeoPolygon geometry)
method to its shape on-the-fly. - Added outlines for map polylines with
MapPolyline(GeoPolyline geometry, double widthInPixels, Color color, double outlineWidthInPixels, Color outlineColor)
. - Added
MapView.setWatermarkPosition(WatermarkPlacement placement, int bottomCenterMargin)
to set the watermark's position on the MapView
. - Added the
WatermarkPlacement
enum. - Added the following to the
com.here.sdk.search
package: -
AddressQuery
to specify an address query. -
CategoryQuery
to specify a query by categories. -
Contact
that represents the contact information. -
IdQuery
to specify an id query. -
OpeningHours
to represent the information on opening hours. -
Place
to represent a location object, such as a country, a city, a point of interest(POI) etc. -
PlaceCategory
to define a set of most commonly used categories. -
ScheduleDetails
to encapsulate schedule details complying with the iCalendar specification. -
Suggestion
to represent a suggestion of an address or a place based on a query. -
TextQuery
option to specify a text query.
- Added the following methods to
SearchEngine
: -
search(query: IdQuery, callback: IdSearchCallback)
to search for a place based on its ID. -
search(query: CategoryQuery, callback: SearchCallback)
to search for places based on a list of categories.
- Added the structure
Details
to the Place
object. It contains following fields: -
categories
for the list of categories assigned to the place. -
contacts
for the contact list of the place. -
openingHours
for the list of information on the opening hours of the place.
- Added the constructor
SDKOptions(@NonNull String accessKeyId, @NonNull String accessKeySecret, @NonNull String cachePath, @NonNull AuthenticationPreferences authenticationPreferences)
to SDKOptions
to use the local system time for authentication instead of getting it from the server.
API Changes
- Changed type of
GeoCoordinates.altitude
from float
to double
. - Changed type of
MapPolyline()
constructor from float
to double
for the widthInPixels
parameter. - Changed type of
MapView.pickMapItems()
from float
to double
for the radius
parameter. - Changed the return type of
Route.getDurationInSeconds()
from long
to int
. - Changed the return type of
Route.getTrafficDelayInSeconds()
from long
to int
. - Changed the return type of
Section.getDurationInSeconds()
from long
to int
. - Changed the return type of
Section.getTrafficDelayInSeconds()
from long
to int
. - Changed the return type of
SectionProgress.remainingDurationInSeconds
from long
to int
. - Changed the return type of
SectionProgress.trafficDelayInSeconds
from long
to int
. - Changed the method in the
PanListener
from void onPan(@NonNull GestureState state, @NonNull Point2D origin, @NonNull Point2D translation, float velocity)
to void onPan(@NonNull GestureState state, @NonNull Point2D origin, @NonNull Point2D translation, double velocity)
. - Changed the method in the
PinchRotateListener
from void onPinchRotate(@NonNull GestureState state, @NonNull Point2D pinchOrigin, @NonNull Point2D rotationOrigin, float twoFingerDistance, @NonNull Angle rotation)
to void onPinchRotate(@NonNull GestureState state, @NonNull Point2D pinchOrigin, @NonNull Point2D rotationOrigin, double twoFingerDistance, @NonNull Angle rotation)
. - Changed the method in the
TwoFingerPanListener
from void onTwoFingerPan(@NonNull GestureState state, @NonNull Point2D origin, @NonNull Point2D translation, float velocity)
to void onTwoFingerPan(@NonNull GestureState state, @NonNull Point2D origin, @NonNull Point2D translation, float velocity)
. - Removed the
MapCamera.OrientationUpdate.roll
field. - Removed the
MapCamera.OrientationUpdate(@Nullable Double bearing, @Nullable Double tilt, @Nullable Double roll)
constructor. - Removed the
MapMatchedWaypoint
class. - Removed the
RouteRestrictions
class. - Removed the
SideOfStreet
enumeration. - Removed the
Route.getMapMatchedWaypoints()
method. - Removed the interface
Searchable
. - Replaced
Suggestion.getSearchable
with Suggestion.getPlace
. - Removed the method
SearchOptions(@Nullable Integer maxItems)
. - Use
SearchOptions()
instead, as the languageCode
and maxItems
are set to null with this constructor.
- Removed the
AutosuggestEngine
, GeocodingEngine
, and ReverseGeocodingEngine
. Their functionalities are now integrated into the SearchEngine
class: - Use
SearchEngine.search(TextQuery, SearchOptions, SearchCallback)
to search for Place
results. - Use
SearchEngine.search(AddressQuery, SearchOptions, SearchCallback)
to geocode an address to a geographic coordinate. Now, geocoding is limited to GeoCoordinates
. GeoBox
and GeoCircle
are dropped. - Use
SearchEngine.search(GeoCoordinates, SearchOptions, SearchCallback)
to reverse geocode a geographic coordinate to an address. - Use
SearchEngine.search(CategoryQuery, SearchOptions, SearchCallback)
to search for Place
results based on a list of categories. - Use
SearchEngine.suggest(TextQuery, SearchOptions, SuggestCallback)
to search for auto suggested Place
results.
- Replaced
SearchCategory
with SearchEngine.search(CategoryQuery, Options, SearchCallback)
. - Replaced the
CategoryId
class with the PlaceCategory
class. - Replaced the
SearchResult
class with the Place
class. - Replaced the
SearchEngine.Callback
, GeocodingEngine.Callback
, and the ReverseGeocodingEngine.Callback
by the SearchCallback
class. - Replaced the
AutosuggestEngine.Callback
with the the SuggestCallback
class. - Removed the following classes and their functionalities:
AutosuggestResultType
GeocodingResult
- Removed the
AutosuggestResult
class. Its functionalities have now been moved to the Suggestion
class. - Removed the field
textformat
from the SearchOptions
class. - Removed the function
SearchOptions.getDefaultOptions()
. - Removed the following constructors from the
SearchEngine
: -
SearchEngine(SearchOptions defaultOptions)
. -
SearchEngine(SDKNativeEngine engine, SearchOptions defaultOptions)
.
- Removed the
BicycleOptions
from the transport mode options for route calculation. -
OptimizationMode.SHORTEST
is no longer supported and now automatically converted to OptimizationMode.FASTEST
for the transport mode option TransportMode.PEDESTRIAN
.
Deprecated
- Deprecated the
GeoCoordinates(double latitude, double longitude, float altitude)
constructor. Use the GeoCoordinates(double latitude, double longitude, double altitude)
constructor instead. - Deprecated the
GeoCircle()
constructor that accepts type float
for the radius
parameter. Use the GeoCircle()
constructor that accepts type double
for the radius
parameter instead. - Deprecated the
Anchor2D()
constructor that accepts type float
for the horizontal and vertical parameters. Use the Anchor2D()
constructor that accepts type double
for the horizontal and vertical parameters instead.
Resolved Issues
- Fixed: Engines will not operate when the time of the device is incorrect. Now, the timestamp of the device is authenticated to enable the engines to operate.
- Fixed: Map marker images may flicker when removing or adding new markers.
- Fixed: A green or black screen may appear for a few milliseconds when loading a map view.
- Fixed: Map polylines may disappear when zooming out too far.
- Fixed: Loading a map scene may be slower for debug builds on devices and simulators.
Known Issues
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. -
AvoidanceOptions
will be ignored when calculating truck routes. - Transparency for
MapPolylines
is not supported.
Version 4.2.2.0
New Features
- Added new built in map schemes:
MapScheme.GREY_DAY
and MapScheme.GREY_NIGHT
to be used with the MapScene.loadScene()
function. - Added two new layer names:
TRAFFIC_FLOW
and TRAFFIC_INCIDENTS
to the MapScene.Layers
struct to be used for switching on/off traffic flow and incidents with the MapScene.setLayerState()
function. - Added SVG support with
MapImage(@NonNull String filePath, long width, long height)
constructor that supports SVG Tiny images. - Added
MapImage MapImageFactory.fromFile(String filePath, int width, int height)
factory method for creating map images from SVG Tiny map images.
API Changes
- Removed the deprecated field
OrientationUpdate.azimuth
. Use OrientationUpdate.bearing
instead.
Resolved Issues
- Fixed: Map objects still appear on the wrong map scene after they have been removed.
- Fixed: Adding or moving a map marker is now done instantly, without a fade in delay.
Known Issues
- Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Map marker images may flicker when removing or adding new markers.
- A green or black screen may appear for a few milliseconds when loading a map view.
- Map polylines may disappear when zooming out too far.
- Loading a map scene may be slower for debug builds on devices and simulators.
- Custom map styles will no longer work until converted with a new editor that is not yet released.
Version 4.2.1.0
New Features
- Added
MapCamera.State
to access full information about the camera's state. - Added
MapPolyline.updateGeometry(@NonNull GeoPolyline geometry)
to update the polyline shape. - Added
MapScene.setLayerState(String layerName, LayerState state)
to identify the layer names which are passed to setLayerState()
. - Added class
MapCameraObserver
to get updates whenever the map is redrawn after camera parameters change. - Added methods
MapCamera.addObserver(@NonNull MapCameraObserver observer)
and MapCamera.removeObserver(@NonNull MapCameraObserver observer)
to add and remove an observer to the camera. - Added
Authentication
API to obtain a valid token that can be used to initiate queries to HERE REST APIs.
API Changes
- Replaced enum type
RoadType.STREET
with RoadType.RURAL
and RoadType.URBAN
. - Changed the return annotation for the method
MapView.viewToGeoCoordinates
to Nullable
.
Deprecated
- The field
MapCamera.OrientationUpdate.azimuth
is deprecated. Use the newly introduced MapCamera.OrientationUpdate.bearing
instead. - The field
MapCamera.OrientationUpdate.roll
is now deprecated.
Resolved Issues
- Fixed: When the map is tilted, map polylines may look incorrect.
Known Issues
- Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Map marker images may flicker when removing or adding new markers.
- When loading a map view a green or black screen may appear for a few milliseconds.
- Map polylines may disappear when zooming out too far.
Version 4.2.0.0
Highlights
- This is the initial release.
Known Issues
- Engines will not operate when the device's time is wrong. Also, the map will not be able to show any (vector) tiles.
- Map caching may not work as expected for satellite map scheme. Existing tiles may be reloaded.
- Map marker images may flicker when removing or adding new markers.
- When loading a map view a green or black screen may appear for a few milliseconds.
- Map polylines may disappear when zooming out too far.
- When the map is tilted, map polylines may look incorrect.