Release Notes
We are pleased to announce the availability of version 4.4.2.0 (Lite Edition) of the new HERE SDK for iOS.
This is a stable release. We are constantly working on new features, stabilizing APIs, improving our KPIs, and evaluating your feedback.
Changes
This section documents major changes to this release that may require you to update your applications.
Version 4.4.2.0
New Features
- Added
Place.geoCoordinates
to get the GeoCoordinates
of a Place
. Note that only Place
instances retrieved from a Suggestion
result may not contain geographic coordinates, hence the returned value is optional. - Added departure/arrival information to the
Section
of a Route
: - Added
Departure
class with the following fields: waypointIndex
originalCoordinates
mapMatchedCoordinates
- Added
Arrival
class with the following fields: waypointIndex
originalCoordinates
mapMatchedCoordinates
- Added
Section.departure
property. - Added
Section.arrival
property.
- Added
Suggestion.type
to get the new SuggestionType
enum that indicates whether this Suggestion
is a place, a chain like a store, restaurant or bussiness chain - or a category
.
Deprecated
- Deprecated
Place.coordinates
, use Place.geoCoordinates
instead. Note that only Place
instances retrieved from a Suggestion
result may not contain geographic coordinates, hence the returned value has become optional.
Resolved Issues
- Fixed: When the
Route
used to search along the route is too long, now a proper error is returned with SearchError.ROUTE_TOO_LONG
. - Fixed: For places that are obtained from the
Suggestion
class, the geographic coordinates always contain a latitude and a longitude equal to 0. An additional places request is needed to obtain the coordinates.
Known Issues
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Map gestures can be slow when there's no internet connection and the map is using cached map data.
Changes from Previous Releases
This section documents major changes from past releases. We encourage you to use the latest release, 4.4.2.0.
Version 4.4.1.0
New Features
- Traffic flows can now be identified along a
Route
. Introduced TrafficSpeeds
class to provide traffic speed information over a Section
polyline. The Section.trafficSpeeds
property returns an array of TrafficSpeeds
's which covers the Section
polyline. - Added
SearchError.queryTooLong
and SearchError.filterTooLong
. These errors will appear if the search query or search filter is too long (over 300 characters). - Added
Route.transportMode
which returns the original TransportMode
as requested for the route calculation.
Known Issues
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Map gestures can be slow when there's no internet connection and the map is using cached map data.
- 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.4.0.2
New Features
- Search for places along a route: Added the
GeoCorridor
option to filter TextQuery
results when performing an asynchronous search request along a route with the method TextQuery(query, in: corridorArea, near: areaCenter)
. - Search for places by category along a route: Added the
CategoryQuery
structure that accepts the GeoCorridor
option in its constructors with the filter
parameter CategoryQuery(_ : [PlaceCategory], filter: String, in: GeoCorridor)
and without the filter
parameter CategoryQuery(_ : [PlaceCategory], in: GeoCorridor)
to enable category search along a route. This feature is in BETA state. - Added to the
Details
class the method: getPrimaryCategories() -> [PlaceCategory]
to get a place category from the result of a search query. - Added a new font with Chinese, Japanese and Korean characters. The font occupies
1.7MB
and can be optionally removed to save space: Open the heresdk.framework
file and remove the following files: style/fonts/DroidSansFallback.woff
style/fonts/DroidSansFallback.license
API Changes
- Changed the rendered resolution of map tiles from
256x256
to 512x512
pixels. Now, all zoom levels are shifted by -1
. I.e. users should subtract 1 from their default zoom levels in their apps or custom zoom level limits. - Reduced the rotation sensitivity of the
Pinch Rotate
gesture. Now, it is easier to zoom in on the map without rotating it.
Resolved Issues
- Fixed: Map labels are not rendered in Chinese, Japanese and Korean. Now, Map labels are rendered in Chinese, Japanese and Korean.
Known Issues
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Map gestures can be slow when there's no internet connection and the map is using cached map data.
- 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
Resolved Issues
- Fixed visual design of the disputed borders for the
normalDay
and hybridDay
map styles.
Known Issues
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Map labels are not rendered in Chinese.
- Map gestures can be slow when there's no internet connection and the map is using cached map data.
Version 4.3.3.0
New Features
- Added the method
search(placeIdQuery query: PlaceIdQuery, languageCode: LanguageCode?, completion: PlaceIdSearchCompletionHandler) -> TaskHandle
to perform an asynchronous request to search for a place based on its ID and language code. - Added the possibility to filter
AddressQuery
results by the CountryCode
with the method AddressQuery(query: String, near: GeoCoordinates, inCountries: [CountryCode])
. - Added the possibility to filter
TextQuery
results by the CountryCode
with the method TextQuery(query: String, near: GeoCoordinates, inCountries: [CountryCode])
. - Added the ability to get the currently used tile cache size with the method
var tilesCacheSize: UInt32
.
Deprecated
- Deprecated the method
search(placeIdQuery query: PlaceIdQuery, completion: PlaceIdSearchCompletionHandler) -> TaskHandle
. Use the newly introduced search(placeIdQuery query: PlaceIdQuery, languageCode: LanguageCode?, completion: PlaceIdSearchCompletionHandler) -> TaskHandle
method instead.
Resolved Issues
- Fixed: Route scene is not displayed fully for the longest routes. Now, the route scene is displayed fully for the longest routes.
- Fixed: Missing continent labels at maximum zoom out level. Now, continent labels are rendered at the maximum zoom out level.
Known Issues
-
SearchEngine
: Place.getId()
is empty for reverse geocoding results. - Map labels are not rendered in Chinese.
Version 4.3.2.0
New Features
- Added updated support for the
SDKOptions.cachePath
handling. If SDKOptions.cachePath
is not set, it will be assigned a default path [to be precise: <Application Home>/Library/Caches
].
Resolved Issues
- Fixed: The
Authentication
protocol was not always called on the main thread. Now the protocol is guaranteed to be always called on the main thread.
Known Issues
-
SearchEngine
: Place.Id
is empty for reverse geocoding results. - Map labels are not rendered in Chinese.
Version 4.3.1.0
Resolved Issues
- Fixed:
AvoidanceOptions
will be ignored when calculating truck routes. Now, AvoidanceOptions
are considered when calculating truck routes.
Known Issues
-
SearchEngine
: Place.Id
is empty for reverse geocoding results.
Version 4.3.0.0
New Features
- Added the
GeoCoordinates(latitude: Double, longitude: Double, altitude: Double)
constructor. - Added the
GeoCircle()
constructor that accepts type double
for the radius
parameter. - Added support for map circles: Added the
GeoPolygon(@NonNull GeoCircle geoCircle)
constructor, which can then be used to create a MapPolygon
that has the shape of a circle. - Added the
Anchor2D()
constructor that accepts type double
for the horizontal and vertical parameters. - Added the function
MapViewLite.pickMapItems(at viewCoordinates: Point2D, radius: Double, callback: PickMapItemsCallbackLite)
to pick map items from the MapView. - Added the following to the
com.here.sdk.search
package: -
AddressQuery
to specify an address query. -
CategoryQuery
to specify a query by categories. -
Contact
that represents the contact information. -
IdQuery
to specify an id query. -
OpeningHours
to represent the information on opening hours. -
Place
to represent a location object, such as a country, a city, a point of interest(POI) etc. -
PlaceCategory
to define a set of most commonly used categories. -
ScheduleDetails
to encapsulate schedule details complying with the iCalendar specification. -
Suggestion
to represent a suggestion of an address or a place based on a query. -
TextQuery
option to specify a text query.
- Added the following methods to
SearchEngine
: -
search(idQuery query: IdQuery, completion: IdSearchCompletionHandler) -> TaskHandle
to search for a place based on its ID. -
search(_ query: CategoryQuery, options: SearchOptions, completion: SearchCompletionHandler) -> TaskHandle
to search for places based on a list of categories.
- Added the structure
Details
to the Place
object. It contains following fields: -
categories
for the list of categories assigned to the place. -
contacts
for the contact list of the place. -
openingHours
for the list of information on the opening hours of the place.
- Added the following protocols to manage tile caching:
-
maxTilesCacheSize
property to set the maximum size available for tiles caching when creating a map view in a storyboard. -
init(maxTilesCacheSizeInBytes: UInt32), init(frame: CGRect, maxTilesCacheSizeInBytes: UInt32), init(frame: CGRect, withSdkEngine sdkEngine: SDKNativeEngine, maxTilesCacheSizeInBytes: UInt32)
initializers to set the maximum size available for tiles caching when creating a map view by hand. -
clearTilesCache()
to remove all cached tiles from the persistent memory.
- Added the optional parameter
public init(accessKeyId: String, accessKeySecret: String, cachePath: String, authenticationPreferences: AuthenticationPreferences = AuthenticationPreferences.useServerTime)
of type AuthenticationPreferences
to the SDKOptions
constructor to use the local system time for authentication instead of getting it from the server.
API Changes
- Changed type of
GeoCoordinates.altitude
from float
to double
. - Changed the return type of
Route.durationInSeconds
from Int64
to Int32
. - Changed the return type of
Route.trafficDelayInSeconds
from Int64
to Int32
. - Changed the return type of
Section.durationInSeconds
from Int64
to Int32
. - Changed the return type of
Section.trafficDelayInSeconds
from Int64
to Int32
. - Changed the return type of
SectionProgress.remainingDurationInSeconds
from Int64
to Int32
. - Changed the return type of
SectionProgress.trafficDelayInSeconds
from Int64
to Int32
. - Changed the method in the
PanDelegate
from onPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Float) -> Void
to onPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Double) -> Void
. - Changed the method in the
PinchRotateDelegate
from onPinchRotate(state: GestureState, pinchOrigin: Point2D, rotationOrigin: Point2D, twoFingerDistance: Float, rotation: Angle) -> Void
to onPinchRotate(state: GestureState, pinchOrigin: Point2D, rotationOrigin: Point2D, twoFingerDistance: Double, rotation: Angle) -> Void
. - Changed the method in the
TwoFingerPanDelegate
from onTwoFingerPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Float) -> Void
to onTwoFingerPan(state: GestureState, origin: Point2D, translation: Point2D, velocity: Double) -> Void
. - Removed the
MapMatchedWaypoint
class. - Removed the
RouteRestrictions
struct. - Removed the
SideOfStreet
enumeration. - Removed the
Route.mapMatchedWaypoints
property. - Removed the protocol
Searchable
. - Replaced
Suggestion.searchable
with Suggestion.place
. - Removed the
AutosuggestEngine
, GeocodingEngine
, and ReverseGeocodingEngine
. Their functionalities are now integrated into the SearchEngine
class: - Use
SearchEngine.search(textQuery:options:completion:)
to search for Places
. - Use
SearchEngine.search(addressQuery:options:completion:)
to geocode an address to a geographic coordinate. Now, geocoding is limited to GeoCoordinates
. GeoBox
and GeoCircle
are dropped. - Use
SearchEngine.search(coordinates:options:completion:)
to reverse geocode a geographic coordinate to an address. - Use
SearchEngine.search(categoryQuery:options:completion:)
to search for Places
based on a list of categories. - Use
SearchEngine.suggest(textQuery:options:completion:)
to search for auto suggested Place
results.
- Replaced
SearchCategory
with SearchEngine.search(_ query: CategoryQuery, options: SearchOptions, completion: SearchCompletionHandler) -> TaskHandle
. - Replaced the
CategoryId
class with the PlaceCategory
class. - Replaced the
SearchResult
class with the Place
class. - Replaced the
SearchEngine.CompletionHandler
, GeocodingEngine.CompletionHandler
, and the ReverseGeocodingEngine.CompletionHandler
by the SearchCompletionHandler
class. - Replaced the
AutosuggestEngine.CompletionHandler
with the the SuggestCompletionHandler
class. - Removed the following classes and their functionalities:
AutosuggestResultType
GeocodingResult
- Removed the
AutosuggestResult
class. Its functionalities have now been moved to the Suggestion
class. - Removed the field
textformat
from the SearchOptions
class. - Removed the function
defaultOptions: SearchOptions
. - Removed the following constructors from the
SearchEngine
: -
init(defaultOptions: HLSSearchOptions)
. -
init(_ sdkEngine: SDKNativeEngine, defaultOptions: HLSSearchOptions)
.
- Removed the
BicycleOptions
from the transport mode options for route calculation. -
OptimizationMode.shortest
is no longer supported and now automatically converted to OptimizationMode.fastest
for the transport mode option TransportMode.pedestrian
.
Deprecated
- Deprecated the
GeoCoordinates(latitude: Double, longitude: Double, altitude: Float)
constructor. Use the GeoCoordinates(latitude: Double, longitude: Double, altitude: Double)
constructor instead. - Deprecated the function
MapViewLite.pickMapItems(at viewCoordinates: Point2D, radius: Float, callback: PickMapItemsCallbackLite)
. Use the function MapViewLite.pickMapItems(at viewCoordinates: Point2D, radius: Double, callback: PickMapItemsCallbackLite)
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.
Known Issues
-
SearchEngine
: Place.Id
is empty for reverse geocoding results. -
AvoidanceOptions
will be ignored when calculating truck routes.
Version 4.2.2.0
New Features
- Added a
TileServerProvider
interface that allows to provide a custom implementation to generate dynamic URLs for a RasterLayer
. This can be useful to set different raster layer sources based on the region in the world. Added SimpleTileServerProvider
as a convenience implementation that sets a static tile URL provider.
API Changes
- Changed constructor for
RasterLayer
to allow setting a TileServerProvider
(see above).
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.
Deprecated
- The field
Camera.boundingRect
is deprecated. Use the newly introduced field Camera.boundingBox
instead.
Version 4.2.1.0
New Features
- Added
CameraLite.orbitBy(_ delta: CameraLite.OrientationUpdate, around origin: Point2D)
to orbit the camera around a specified point. - Added
CameraLite.zoomBy(_ factor: Double, around origin: Point2D)
to zoom the camera around a specified point relative to the given factor. - 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
.
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.
Version 4.2.0.0
Highlights
- Added Swift module stability for the HERE SDK XCFramework to allow forward-compatibility with future Swift versions. The current framework is built using Swift 5.1.2, but it should be also readable for future Swift compiler versions.
New Features
- Added the HERE logo watermark placement functionality with the enum
WatermarkPlacement
and method MapViewLite.setWatermarkPosition(placement: WatermarkPlacement, bottomCenterMargin: UInt32)
.
API Changes
- Changed all class names within the
MapViewLite
package to have a 'Lite' suffix. If any class name already contained 'Lite' it was moved consistently to the end of the name. - Changed completion handlers to nested types in the following methods:
-
SearchEngine
: -
SearchEngine.search(at coordinates: GeoCoordinates, query: String, options: SearchOptions, completion: SearchCallback)
to SearchEngine.search(at coordinates: GeoCoordinates, query: String, options: SearchOptions, completion: SearchEngine.CompletionHandler)
.
-
AutosuggestEngine
: -
AutosuggestEngine.suggest(at coordinates: GeoCoordinates, query: String, options: AutosuggestOptions, completion: AutosuggestCallback)
to AutosuggestEngine.suggest(at coordinates: GeoCoordinates, query: String, options: AutosuggestOptions, completion: AutosuggestENgine.CompletionHandler)
.
-
ReverseGeocodingEngine
: -
ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, options: ReverseGeocodingOptions, completion: ReverseGeocodingCallback)
to ReverseGeocodingEngine.searchAddress(at coordinates: GeoCoordinates, query: String, options: ReverseGeocodingOptions, completion: ReverseGeocodingEngine.CompletionHandler)
.
-
GeocodingEngine
: -
GeocodingEngine.searchLocations(coordinates: GeoCoordinates, options: GeocodingOptions, completion: GeocodingCallback)
to GeocodingEngine.searchLocations(at coordinates: GeoCoordinates, query: String, options: GeocodingOptions, completion: GeocodingEngine.CompletionHandler)
.
-
TrafficEngine
: -
TrafficEngine.queryForIncidents(in boxArea: GeoBox, options: IncidentQueryOptions, completion: QueryForIncidentsCallback)
to TrafficEngine.queryForIncidents(in boxArea: GeoBox, options: IncidentQueryOptions, completion: TrafficEngine.CompletionHandler)
.
- Removed the
balanced
identifier from the OptimizationMode
enum for route calculation. - Renamed
RouteLeg
to Section
- Renamed
Route.legs
to Route.sections
. - Renamed
RouteProgress.routeLegIndex
to RouteProgress.sectionIndex
. - Renamed
MapMarkerResource
to MapImageLite
. - Renamed
PickMapItemResult
to PickMapItemResultLite
. - Renamed
CameraObserver
to CameraObserverLite
. - Renamed member
geoBox
to boundingBox
in the following data structures: -
SearchResult.geoBox
to SearchResult.boundingBox
. -
AutosuggestResult.geoBox
to AutosuggestResult.boundingBox
. -
GeocodingResult.geoBox
to GeocodingResult.boundingBox
. -
OpenSearchEngine.Result.geoBox
to OpenSearchEngine.Result.boundingBox
. -
OpenGeocodingEngine.Result.geoBox
to OpenGeocodingEngine.Result.boundingBox
.
- Renamed
SearchResult.geoCoordinates
to SearchResult.coordinates
.
Resolved Issues
- Fixed issue with incorrect pixel width set for rendering a
MapPolyline
on the map. Now, a MapPolyline
can have its stroke width set to physical pixels.
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.
Version 4.1.6.0
Highlights
- Updated binary distribution bundle to use Apple's new XCFramework format. As a benefit, it is no longer necessary to use
lipo
to remove undesired x86 architectures for distribution. - The minimum supported OS was raised from iOS 11 to iOS 12 as the market share for devices running iOS 11 is below 3%.
New Features
- Added the new fields
mainLanguageCode
and fallbackLanguageCode
to specify the desired map language via MapSceneConfig
when loading a map scene. - Added a
Color
class that encapsulates common color values. - Added
Route.trafficDelayInSeconds
and RouteLeg.trafficDelayInSeconds
.
API Changes
- Custom route options moved to
CustomRoutingEngine
as nested types: -
CustomCarOptions
moved to CustomRoutingEngine.CarOptions
. -
CustomBicycleOptions
moved to CustomRoutingEngine.BicycleOptions
. -
CustomPedestrianOptions
moved to CustomRoutingEngine.PedestrianOptions
. -
CustomTruckOptions
moved to CustomRoutingEngine.TruckOptions
. -
CustomTruckSpecifications
moved to CustomRoutingEngine.TruckSpecifications
.
-
MapCircle
center latitude is now limited to the range [85S, 85N]. Map circle's radius can't exceed the range [89S, 89N] to prevent crossing a pole, otherwise it is clamped. - Changed types for
Incident.startTimestamp
, Incident.stopTimestamp
and Incident.updateTimestamp
from Long
to Date
. - Changed field
coordinates
to geoCoordinates
in SearchResult
. - Changed the occurrences for the argument label
callback
to completion
for the methods in the following classes; -
AutosuggestEngine
: -
AutosuggestEngine.suggest(at: GeoCoordinates, query: String, options: AutosuggestOption, callback: AutosuggestCallback)
to AutosuggestEngine.suggest(at: GeoCoordinates, query: String, options: AutosuggestOption, completion: AutosuggestCallback)
. -
AutosuggestEngine.suggest(at: GeoCoordinates, query: String, callback: AutosuggestCallback)
to AutosuggestEngine.suggest(at: GeoCoordinates, query: String, completion: AutosuggestCallback)
. -
AutosuggestEngine.suggest(in: GeoBox, query: String, options: AutosuggestOption, callback: AutosuggestCallback)
to AutosuggestEngine.suggest(in: GeoBox, query: String, options: AutosuggestOption, completion: AutosuggestCallback)
. -
AutosuggestEngine.suggest(in: GeoBox, query: String, callback: AutosuggestCallback)
to AutosuggestEngine.suggest(in: GeoBox, query: String, completion: AutosuggestCallback)
. -
AutosuggestEngine.suggest(in: GeoCircle, query: String, options: AutosuggestOption, callback: AutosuggestCallback)
to AutosuggestEngine.suggest(in: GeoCircle, query: String, options: AutosuggestOption, completion: AutosuggestCallback)
. -
AutosuggestEngine.suggest(in: GeoCircle, query: String, callback: AutosuggestCallback)
to AutosuggestEngine.suggest(in: GeoCircle, query: String, completion: AutosuggestCallback)
.
-
GeocodingEngine
: -
GeocodingEngine.searchLocation(in: GeoBox, query: String, options: GeocodingOption, callback: GeocodingCallback)
to GeocodingEngine.searchLocation(in: GeoBox, query: String, options: GeocodingOption, completion: GeocodingCallback)
. -
GeocodingEngine.searchLocation(in: GeoBox, query: String, callback: GeocodingCallback)
to GeocodingEngine.searchLocation(in: GeoBox, query: String, completion: GeocodingCallback)
. -
GeocodingEngine.searchLocation(in: GeoCircle, query: String, options: GeocodingOption, callback: GeocodingCallback)
to GeocodingEngine.searchLocation(in: GeoCircle, query: String, options: GeocodingOption, completion: GeocodingCallback)
. -
GeocodingEngine.searchLocation(in: GeoCircle, query: String, callback: GeocodingCallback)
to GeocodingEngine.searchLocation(in: GeoCircle, query: String, completion: GeocodingCallback)
.
-
ReverseGeocodingEngine
: -
ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, options: ReverseGeocodingOptions, callback: ReverseGeocodingCallback)
to ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, options: ReverseGeocodingOptions, completion: ReverseGeocodingCallback)
. -
ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, callback: ReverseGeocodingCallback)
to ReverseGeocodingEngine.searchAddress(coordinates: GeoCoordinates, completion: ReverseGeocodingCallback)
.
-
SearchEngine
: -
SearchEngine.search(at: GeoCoordinates, query: String, options: SearchOptions, callback: SearchCallback)
to SearchEngine.search(at: GeoCoordinates, query: String, options: SearchOptions, completion: SearchCallback)
. -
SearchEngine.search(at: GeoCoordinates, query: String, callback: SearchCallback)
to SearchEngine.search(at: GeoCoordinates, query: String, completion: SearchCallback)
. -
SearchEngine.search(in: GeoBox, query: String, options: SearchOptions, callback: SearchCallback)
to SearchEngine.search(in: GeoBox, query: String, options: SearchOptions, completion: SearchCallback)
. -
SearchEngine.search(in: GeoBox, query: String, callback: SearchCallback)
to SearchEngine.search(in: GeoBox, query: String, completion: SearchCallback)
. -
SearchEngine.search(in: GeoCircle, query: String, options: SearchOptions, callback: SearchCallback)
to SearchEngine.search(in: GeoCircle, query: String, options: SearchOptions, completion: SearchCallback)
. -
SearchEngine.search(in: GeoCircle, query: String, callback: SearchCallback)
to SearchEngine.search(in: GeoCircle, query: String, completion: SearchCallback)
. -
SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], options: SearchOptions, callback: SearchCallback)
to SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], options: SearchOptions, completion: SearchCallback)
. -
SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], callback: SearchCallback)
to SearchEngine.search(at: GeoCoordinates, categoryList: [CategoryId], completion: SearchCallback)
. -
SearchEngine.search(in: GeoBox, categoryList: [CategoryId], options: SearchOptions, callback: SearchCallback)
to SearchEngine.search(in: GeoBox, categoryList: [CategoryId], options: SearchOptions, completion: SearchCallback)
. -
SearchEngine.search(in: GeoBox, categoryList: [CategoryId], callback: SearchCallback)
to SearchEngine.search(in: GeoBox, categoryList: [CategoryId], completion: SearchCallback)
. -
SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], options: SearchOptions, callback: SearchCallback)
to SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], options: SearchOptions, completion: SearchCallback)
. -
SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], callback: SearchCallback)
to SearchEngine.search(in: GeoCircle, categoryList: [CategoryId], completion: SearchCallback)
.
-
TrafficeEngine
: -
TrafficeEngine.queryForIncidents(in : GeoBox, options: IncidentQueryOptions, callback: QueryForIncidentsCallback)
to TrafficeEngine.queryForIncidents(in : GeoBox, options: IncidentQueryOptions, completion: QueryForIncidentsCallback)
.
- Removed
trafficMode
option from RouteOptions
. Traffic delay is now enabled by default. - Renamed
Route.shape
to Route.polyline
. - Renamed
RouteLeg.shape
to RouteLeg.polyline
. - Renamed
Maneuver.shape
to Maneuver.polyline
. - Changed type for
GeocodingOptions.maxItems
from UInt32
to Int32
. - Changed the maximum possible number of route alternatives for the method
RouteOptions.alternatives
from 9
to 6
. - Changed the draw order behavior for
MapPolylines
, MapCircles
and MapPolygons
. The draw order is now limited by 1000
to avoid conflicts with regular map data like labels or building footprints. The draw order should be mainly used to adjust the stack order of objects of the same type. - Renamed
WaypointType.stopOver
to WaypointType.stopover
. - Renamed
Route.travelTimeInSeconds
to Route.durationInSeconds
and changed the returned type from Int32
to Int64
. Same for RouteLeg
. - Removed
Route.baseTimeInSeconds
and Route.trafficTimeInSeconds
. Same for RouteLeg
. Use Route.trafficDelayInSeconds
instead.
Resolved Issues
- Fixed issue with map data not being localized. See the new fields added to
MapSceneConfig
above to set a LanguageCode
. - Fixed issue with kinetic panning triggered unnecessarily on the iOS emulator. Now, kinetic panning is triggered only when the mouse button is released at the end of the gesture.
- Fixed issue with error handling when loading custom map styles. Now, loading a map returns an invalid scene error if the YAML file passed does not exist and is incorrect or has no protocol specified.
- Fixed issue with traffic flow missing at a specific zoom level. Now, traffic flow is displayed at all zoom levels.
Version 4.1.5.0
New Features
- Added kinetic panning to the map ('slippy map'). The map will now smoothly animate along the last direction after a user stops panning. It can be disabled together with the pan gesture.
-
PanGestureHandler.onPan()
is now called with GestureState.cancel
for the first touch after GestureState.end
to stop any kinetic movement that is still in progress. - Added
Maneuver.roadNumber
and Maneuver.nextRoadNumber
to get the current road number and the next road number. - Added lambda notation / closure support when searching for
SearchCategory
.
API Changes
- Removed option
notImplementedYet
from EngineInstantiationErrorCode
enum. - Renamed
EngineInstantiationErrorCode
enum to InstantiationErrorCode
. - Renamed
EngineInstantiationError
to InstantiationError
. - Renamed
Location.timestampInMilliseconds
to Location.timestamp
. - Changed type
Location.timestamp
from Long
to Date
. - Removed field
MapMatchedWaypoint.mapMatchedRoadName
. - Changed
CalculateRouteCallback
type from protocol to typealias. - Route options moved to
RoutingEngine
as nested types: -
CarOptions
moved to RoutingEngine.CarOptions
. -
BicycleOptions
moved to RoutingEngine.BicycleOptions
. -
PedestrianOptions
moved to RoutingEngine.PedestrianOptions
. -
TruckOptions
moved to RoutingEngine.TruckOptions
. -
TruckSpecifications
moved to RoutingEngine.TruckSpecifications
.
- Changed
CalculateRouteCallback
type from protocol
to a typealias
function. - Removed
MapMatchedWaypoint.mapMatchedRoadName
.
Known Issues
- Map data may not be localized based on the device's language.
Resolved Issues
- Optimized the HERE SDK for publishing to Apple's App Store.
Version 4.1.4.0
Highlights
- Xcode 11.2.1 and Swift 5.1.2 are now supported as minimum requirement.
- Added new tutorials to the Developer's Guide that show how to implement smooth Move-To-XY animations and animated map gestures for zoom in/out and kinetic panning.
New Features
- Added
Maneuver.roadName
and Maneuver.nextRoadName
to get the current road name and the next road name. - Added the method
CameraLimits.getMaxTiltForZoomLevel()
for checking the tilt limit at a specific zoom level. The maximum tilt depends on the current zoom level; setting a new zoom level will potentially change the tilt angle.
API Changes
- Renamed
MapScene
to MapLiteScene
. - Renamed
Instruction
to Maneuver
. - Renamed
RouteTextOptions.languages
to RouteTextOptions.language
as it accepts not more than one language. - Moved
Route.transportMode
to RouteLeg.transportMode
. - Moved
LoadSceneCallback
to MapLiteScene
. The callback changed from a protocol to a typealias
. - Renamed
SceneError
to ErrorCode
and moved it to MapLiteScene
. - Renamed
CameraLimitsErrorCode
to ErrorCode
and moved it to CameraLimits
. - Renamed the following map objects:
-
MapPolygon
to MapLitePolygon
. -
MapPolyline
to MapLitePolyline
. -
MapCircle
to MapLiteCircle
. -
MapMarker
to MapLiteMarker
.
- Removed the constant
CameraLimits.maxTilt
.
Known Issues
- Map data may not be localized based on the device's language.
Version 4.1.3.0
This release is mainly focused on stabilization of existing features, bug fixes and overall performance improvements.
Known Issues
- Swift 5.1 is not yet supported.
- Map data may not be localized based on the device's language.
Resolved Issues
- The draw order for raster tile layers now works relatively to other raster tile layers.
- Fixed outlines for map circles.
Version 4.1.2.0
New Features
- The
SearchEngine
can now be used to search for categories like 'restaurants' by setting a list of CategoryId
values.
API Changes
- Renamed
SearchItem
to SearchResult
. - Removed the field
SearchResult.href
. - Renamed the members:
-
AutosuggestResult.boundingRect
to AutosuggestResult.geoBox
. -
GeocodingResult.boundingRect
to GeocodingResult.geoBox
. -
SearchResult.boundingBox
to SearchResult.geoBox
.
- Renamed the members:
-
AutosuggestResult.geoCoordinates
to AutosuggestResult.coordinates
. -
GeocodingResult.geoCoordinates
to GeocodingResult.coordinates
.
Known Issues
- Swift 5.1 is not yet supported.
Version 4.1.1.0
New Features
-
SearchEngine
can now be used to search within a bounding rect for categories by setting a list of CategoryId
values. -
AutosuggestEngine
: - Added the option to search within a
GeoCircle
. - Added the possibility to request specific types (place, address and/or query) via
AutosuggestResultType
that can be set for the AutosuggestOptions
. - Added
TaskHandle
as a return value when calling AutosuggestEngine.suggest(...)
to cancel an ongoing call.
API Changes
- Changed
SearchOptions
to AutosuggestOptions
when consumed by AutosuggestEngine
. - Renamed
SearchItemCategory
to SearchCategory
. - Changed type
SearchCategory
from enum
to struct
. SearchCategory
now contains the following fields: -
id
(String, required): A unique category identifier. This contains the previous enum values as String. -
iconLink
(String, optional): A web link to the category icon. -
localizedName
(String, required): A localized name describing the category.
- Removed
Instruction.Direction
because this information is already available inside Instruction.action
. - Renamed
GeoBoundingRect
to GeoBox
. - Changed
GeoBoundingRect.intersects(geoBoundingRect: GeoBoundingRect)
to GeoBox.intersects(geoBox: GeoBox)
. - Changed
GeoBoundingRect.contains(geoBoundingRect: GeoBoundingRect)
to GeoBox.contains(geoBox: GeoBox)
.
Known Issues
- Swift 5.1 is not yet supported.
Version 4.1.0.0
New Features
- Added bounding box search for auto suggestions.
- Added an empty
MapStyle
that, for example, can be used together with opaque custom raster tile layers. - Added the following error values
httpError
, serverUnreachable
and invalidParameter
to extend error handling for Search, Autosuggest, Geocoding and ReverseGeocoding.
API Changes
- Renamed
PlaceAutosuggestResult
to AutosuggestResult
. - Renamed
EngineInstantiationError
enumeration to EngineInstantiationErrorCode
. - Renamed
CameraLimitsError
enumeration to CameraLimitsErrorCode
. - Renamed
InstantiationError
enumeration to InstantiationErrorCode
. - Unified the error type for
SearchEngine
, AutosuggestEngine
, GeocodingEngine
and ReverseGeocodingEngine
to be of type SearchError
. -
MapScene.setLayerState
is executed immediately now, it no longer takes a callback as an argument, but instead throws an error exception.
Known Issues
- Swift 5.1 is not yet supported.
Resolved Issues
- Fixed: Map polylines may disappear at certain zoom levels when zooming.
- Fixed: Parts of the horizontal and vertical lines of a polygon outline may not be drawn perfectly under certain conditions.
Deprecated
- The methods
CameraLimits.setMinBearing()
, CameraLimits.setMaxBearing()
, CameraLimits.getMinBearing()
and CameraLimits.getMaxBearing()
are deprecated. Use the newly introduced class AngleRange
instead.